CẤU TRÚC CỦA ADO.NET NET Data Provider - một tập hợp các thành phần bao gồm các đối tượng: o Connection : cung cấp việc kết nối đến CSDL o Command : Thi hành các câu lệnh SQL, cập nhật
Trang 2Chương 4: Gắn kết dữ liệu
Data Binding
Trang 3Nội dung chính
ADO.NET
DataBinding
DataBound Control
Trang 4Ôn tập ADO.NET
Trang 5CẤU TRÚC CỦA ADO.NET
NET Data Provider - một tập hợp các thành
phần bao gồm các đối tượng:
o Connection : cung cấp việc kết nối đến CSDL
o Command : Thi hành các câu lệnh SQL, cập nhật dữ liệu thông qua đối tượng Adapter
o DataReader cung cấp một luồng truy xuất DL
o DataAdapter cung cấp cầu nối giữa đối tượng Dataset và CSDL DataAdapter sử dụng đối tượng Command để
thực thi các câu lệnh SQL
Trang 6Mô hình sử dụng ADO.NET với Phần mềm
SqlConnection SqlCommand
Insert Delete Update StoreProcedur
e
SQL
Trang 7Mô hình sử dụng ADO.NET với Phần mềm
SqlConnection SqlDataAdapter
DataSet
Select
Insert Delete Update
1
3 2
Trang 8Đối tượng DataSet
CSDL lưu trữ trong bộ nhớ chính, theo cơ chế
không kết nối
table hoặc là một view mà ta có thể thiết lập mối
quan hệ giữa chúng thông qua đối tượng
Dữ liệu trong DataSet có thể nhất quán bằng
Trang 9Mô hình đối tượng DataSet
Trang 10Đối tượng DataSet
Tạo Dataset:
Thuộc tính
o Tables : trả về danh sách các bảng trong DataSet
o Count : Trả về số DataTable trong DataSet
Trang 11Đối tượng DataTable
DataTable được dùng để trình bày các bảng
Trang 12Đối tượng DataTable
Trang 13Đối tượng DataTable
DataColumn: Trình bày lược đồ của một cột
trong một DataTable Mỗi DataColumn có một
thuộc tính DataType để xác định kiểu dữ liệu
được lưu trữ trong DataColumn
Khởi tạo
DataCoumn dc = new DataColumn();
DataRow: trình bày một dòng dữ liệu trong
DataTable
Trang 14Đối tượng DataTable
Các thuộc tính - phương thức của DataTable
o TableName: tên bảng
o Columns : trả về danh sách các cột trong Datatable
o Columns.Count : trả về số cột trong bảng
o Columns.Add (DataColumn): Thêm cột vào bảng
o Rows : trả về danh sách các dòng, mỗi dòng là một đối tượng DataRow
o Rows.Count : trả về số dòng trong bảng
o Rows.Add (DataRow): thêm một dòng vào bảng
Trang 15Đối tượng DataTable
Ví dụ:
DataTable dt= new DataTable (“Table”);
DataColumn c1= new DataColumn (“F1”);
DataColumn c2= new DataColumn (“F2”);
Trang 19 FindRow (Value): trả về một mảng DataRowView thỏa
điều kiện thiết lập trong thuộc tính sort
Ví dụ: Lọc ra các dòng thỏa điều kiện F2=”A” trong bảng
Trang 20Các bước kết nối CSDL
Bước 1: Tạo kết nối
Bước 2: Tạo điều khiển truy vấn SQL
Bước 3: Mở kết nối dữ liệu
Bước 4: Thực thi truy vấn SQL
Bước 5: Đóng kết nối
Bước 6: In kết quả
Trang 21Lưu ý:
Hoặc tạo chuỗi kết nối duy nhất lưu trong Web.config
o Bổ sung vào tag <configuration> một tag
<connectionStrings> như sau:
Trang 22Trình bày dữ liệu
Trình bày dữ liệu dạng lưới,
có phân trang Trình bày dữ liệu dạng bảng,
có phân trang
Trình bày dữ liệu dạng Chương, mục
Phần tiếp theo sẽ làm rõ
Trang 26Đối tượng Parameters
Chức năng :Truyền tham số cho câu lệnh Sql
khi sử dụng đối tượng command để thao tác dữ
Trang 27Đối tượng Parameters
Trang 28Đối tượng Parameters
Add tham số vào đối tượng command:
o Thứ tự add tham số vào đối tượng command phải đúng với thứ tự các tham số trong câu lệnh sql.
py Value = txtHoTen.Text;
cmd Parameters Add (py);
Trang 29Đối tượng Parameters
Thuộc tính của Parameter
o ParameterName: tên tham số
o SqlDbType: kiểu dữ liệu của tham số
o Size: kích thước của giá trị tham số
o Direction: Input, output or Both
o SourceColumn: ánh xạ một cột từ DataTabe vào Parameter
o Value: gán giá trị cho tham số, giá trị này
Trang 30Gắn kết dữ liệu
Trang 31GIỚI THIỆU
ra mối liên hệ giữa một control (ví dụ một listbox
hoặc một GridView) với dữ liệu nguồn
Có 2 trường hợp kết gán:
o Dùng DataSource Control ( DataSourceID )
o Viết code lấy DataSource ( DataSource )
Cần có sự tham gia của 2 thành phần:
o Nguồn dữ liệu
Trang 32 Các đối tượng cung cấp dữ liệu để hiển thị:
o Biến đơn (int, string, HocSinh, )
Trang 34Cú pháp
Thuộc tính = “<%# nguồn-dữ-liệu%>”
Trang 35 Có thể bind một expression vào control
Bind dữ liệu dạng dãy vào control thể hiện dãy
Trang 36DataBound Control
Các đối tượng gắn kết dữ liệu
Trang 37List-Bound control
Kết nối đến nguồn dữ liệu và hiển thị dữ liệu
Các List – bound control gồm:
Trang 38 Thiết lập các thuộc tính
DataSource DataSet chứa dữ liệu
DataMember Bảng dữ liệu trong DataSet
DataTextField Field trong DataTable được hiển thị
DataValueField Field trong DataTable trở thành giá trị của itemGán d ữ liệu từ Dataset
Trang 40Gán d ữ liệu từ DataReader
Thiết lập thuộc tính
DataSource Nguồn dữ liệu
DataTextField Field trong DataTable được hiển thị
DataValueField Field trong DataTable trở thành giá trị của item
Trang 41Gán d ữ liệu từ DataReader
Gọi phương thức DataBind
listbound DataSource = dr;
listbound DataBind() ;
Trang 42Gán d ữ liệu từ DataReader
Đọc từng record
while (dr.Read()){
string value = dr[Index]ToString();
hoặc string value = dr["FieldName"].ToString();
listBound.Items.Add(new ListItem(value));
}
Trang 43 Cú pháp:
Các thuộc tính:
o Id.Item.Count: số phần tử trong danh sách
o AutoPostBack =true : phần tử được chọn sẽ postback về
server
o SeletedItem: trả về phần tử được chọn
o SeletedText: trả về nội dung phần tử được chọn
< asp : DropDownList ID ="Drp" runat ="server“>
</ asp : DropDownList >
Trang 44 Sự kiện :
o OnSelectedIndexChange
o TextChange
Trang 45Ví dụ
protected void Page_Load( object sender, EventArgs e)
{
string strcn = "server=.; database=SongAlbum; uid=sa; pwd=" ;
SqlConnection con = new SqlConnection (strcn);
con.Open();
string sql = "select * from Artist" ;
SqlCommand cmd = new SqlCommand (sql, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
string text = dr[ 0 ].ToString();
string value = dr[ 1 ].ToString();
Trang 46< asp : ListBox ID ="ListBox1" runat ="server">
</ asp : ListBox ></ div >
Trang 48< asp : CheckBoxList ID ="CkBLst" runat ="server">
</ asp : CheckBoxList >
Trang 51Ví dụ:
<asp:RadioButtonList id="RdLst“ RepeatColumns="2"
RepeatDirection="Vertical“ runat="server">
</asp:RadioButtonList>
protected void Page_Load( object sender, EventArgs e)
{
if (!Page.IsPostBack) {
ArrayList arrlst = new ArrayList ();
arrlst.Add( "Item1" ); arrlst.Add( "Item2" ); arrlst.Add( "Item3" ); arrlst.Add( "Item4" );
rdlst.DataSource = arrlst;
Trang 52 Sử dụng DataList hiển thị dữ liệu từ data source
o Sử dụng khi hiển thị dữ liệu dạng danh sách (tương
Trang 53 Sử dụng tùy chỉnh EditTemplate
Trang 54 Các bước sử dụng DataList:
o Chuẩn bị nguồn dữ liệu
o Gán DataSource cho DataList
o Cấu hình ItemTemplate
Trang 55Cấu hình ItemTemplate
Tuân thủ cú pháp dataBinding:
Thuộc tính = ‘ <% # Eval (“ field/property ”) %> ’
Có thể thực hiện bằng phương pháp Design
Trang 56 Hiển thị danh sách dạng table
Cho phép phân trang
Thực hiện các chức năng Insert, Update và
Delete dữ liệu trực tiếp
Chỉ hiển thị những cột cần hiển thị:
o AutoGenerateCoumns = false
o Add các cột vào Bound Field vào GridView
o PageSize : số record trên mỗi trang
Trang 57 Gán dữ liệu dùng Eval
o Cú pháp:
<%#Eval("FieldName") %>
Trang 61 TemplateField: Cho phép xuất dữ liệu theo ý
muốn, không phải theo dạng bảng
Trang 63Ví dụ
Hiển thị dữ liệu có dạng như hình ta sử dụng
<asp:TemplateField>
Trang 64 Edit dữ liệu trên lưới (không khóa ngoại)
o Update/Edit
Sử dụng Edit/Delete Command Field
o Update: RowEditing , RowCancellingEdit, RowUpdating
o Delete: RowDeleting
Trang 66 Xóa 1 lúc nhiều dòng trên lưới
o Thêm 1 cột CheckBox vào lưới
o Xóa các dòng đang được check
Trang 68<HeaderTemplate> Chứa tiêu đề, chỉ xuất hiện một lần
<ItemTemplate> Phần chứa dữ liệu trong danh sách
<AlternatingItemTemplate> Template này chỉ áp dụng cho những dòng có
thứ tự lẻ
<Separator Template> Xác định nội dung HTML giữa các dòng
Cấu trúc của Repeater
Trang 69o phần dữ liệu đặt trong các thẻ con có
Trang 70Ví dụ
Xuất dữ liệu dùng repeater có dạng:
Trang 71THE END