Bài giảng Ngôn ngữ lập trình nâng cao - Bài 8 - Lý Anh Tuấn
Giới thiệu chung:
ADO.NET là một cải tiến ADO (Active Data Objects),
được sử dụng để tương tác với CSDL hoặc các nguồn
dữ liệu hỗ trợ bởi .NET
ADO.NET cung cấp rất nhiều component cho tạo các
ứng dụng phân tán, chia sẻ dữ liệu
ADO.NET truy xuất đồng nhất tới các nguồn dữ liệu
khác nhau như SQL Server và XML, và các nguồn dữ
liệu qua OLE DB và ODBC
Box.Show(commSQL.ExecuteScalar( ).ToString); Slide 11 of 21Ver. 1.0 Object-Oriented Programming Using C# Đối tượng Command với các Stored Procedure Tạo một đối tượng Command Thiết lập CommandType là StoredProcedure Dùng phương thức Add để tạo và thiết lập các biến (Parameter) Dùng thuộc tính ParameterDirection để thiết lập kiểu biến Gọi phương thức ExecuteReader Dùng đối tượng DataReader để hiển thị hoặc duyệt qua các bản ghi và đóng khi kết thúc Truy cập đầu ra và trả về các biến Slide 12 of 21Ver. 1.0 Object-Oriented Programming Using C# Đối tượng DataAdapter Slide 13 of 21Ver. 1.0 Object-Oriented Programming Using C# Được sử dụng để trao đổi dữ liệu giữa data source và đối tượng DataSet Có thể lấy dữ liệu và insert vào đối tượng DataTable trong DataSet và cập nhật những thay đổi DataSet trở lại data source Có 2 cách tạo đối tượng DataAdapter − Sử dụng đối tượng Connection tồn tại − Mở kết nối Connection nếu cần thiết Dùng phương thức Fill để đặt dự liệu vào DataSet hoặc DataTable, và dùng phương thức Update để đồng bộ dữ liệu thay đổi tới data source Đối tượng DataAdapter Slide 14 of 21Ver. 1.0 Object-Oriented Programming Using C# Tạo đối tượng Command cùng với Connection, và khởi gán thuộc tính SelectComand của đối tượng DataAdapter private void frmProducts_Load(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "Server=TIENPT\\SQL; Database=Northwind;Uid = sa; Pwd = admin123"; con.Open(); SqlCommand cmd = new SqlCommand("Select * from Products",con); SqlDataAdapter adp = new SqlDataAdapter(); adp.SelectCommand = cmd; DataSet ds = new DataSet(); adp.Fill(ds); dgvProducts.DataSource = ds.Tables[0]; //DataGridView dgvProducts.Refresh(); } Sử dụng đối tượng Connection tồn tại Slide 15 of 21Ver. 1.0 Object-Oriented Programming Using C# Khởi tạo đối tượng DataAdapter đặt vào các tham số là chuỗi query và đối tượng Connection Nó sẽ tự kiểm tra Connection, sẽ tự động mở và đóng khi hoàn thành private void frmProducts_Load(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "Server=TIENPT\ \SQL;Database=Northwind;Uid = sa; Pwd = admin123"; SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con); DataSet ds = new DataSet(); adp.Fill(ds); dgvProducts.DataSource = ds.Tables[0];//DataGridView dgvProducts.Refresh(); } Sử dụng đối tượng Connection tồn tại Slide 16 of 21Ver. 1.0 Object-Oriented Programming Using C# Đối tượng DataSet Tổng quan về dữ liệu không kết nối Đối tượng DataSet Cư trú dữ liệu trong DataSet Sử dụng Relationship trong DataSet Sử dụng các Constraint Cập nhật dữ liệu trong DataSet Cập nhật dữ liệu tại nguồn Slide 17 of 21Ver. 1.0 Object-Oriented Programming Using C# Tổng quan về dữ liệu không kết nối Slide 18 of 21Ver. 1.0 Object-Oriented Programming Using C# Mỗi công nghệ truy cập dữ liệu đều đã cải thiện khái niệm không kết nối, nhưng đến ADO.Net mới cung cấp giải pháp cách đầy đủ. ADO.Net được thiết kế dùng cho Internet ADO.Net sử dụng XML truyền tải định dạng dữ liệu. ADO.Net cung cấp một đối tượng mới cho việc caching dữ liệu trên máy client. Đối tượng này là DataSet Tổng quan về dữ liệu không kết nối Slide 19 of 21Ver. 1.0 Object-Oriented Programming Using C# Đối tượng DataSet Slide 20 of 21Ver. 1.0 Object-Oriented Programming Using C# Lưu dữ liệu trong DataSet Lưu dữ liệu trong DataSet từ một RDBMS SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con); DataSet ds = new DataSet(); adp.Fill(ds, "Products"); Lập trình tạo Dataset DataSet dsPubs = new DataSet(); DataTable dtAuthor = new DataTable("Author"); dtAuthor.Columns.Add("AuthorID", Type.GetType("System.Int32")); dsPubs.Tables.Add(dtAuthor); dgvProducts.DataSource = dsPubs.Tables[0];//DataGridView dgvProducts.Refresh(); Slide 21 of 21Ver. 1.0 Object-Oriented Programming Using C# Sử dụng Relationship trong DataSet Tạo Relationship DataRelation relPubsTitle = new DataRelation("PubsTitles",dsPubs.Tables["Publishers"].Columns[ "pub_id"],dsPubs.Tables["Titles"].Columns["pub_id"]); dsPubs.Relations.Add(relPubsTitle); Truy cập dữ liệu quan hệ //Lay ban ghi dau tien trong bang Publishers DataRow pubRow = dsPubs.Tables["Publishers"].Rows[0]; //Lay cac ban ghi con cua quan he bang Publishers va Titles DataRow[] titleRows = pubRow.GetChildRows("PubsTitles"); Slide 22 of 21Ver. 1.0 Object-Oriented Programming Using C# Cập nhật dữ liệu trong DataSet Thêm một Row mới DataRow drNewRow = dsPubs.Tables["Titles"].NewRow(); drNewRow["title"] = "New Book"; drNewRow["type"] = "business"; dsPubs.Tables["Titles"].Rows.Add(drNewRow); Thay đổi Rows DataRow drChangeRow = dsPubs.Tables["Titles"].Rows[0]; drChangeRow.BeginEdit(); drChangeRow["title"] = drChangeRow["title"].ToString() + " 1"; drChangeRow.EndEdit(); Xóa dữ liệu DataRow drDelRow = dsPubs.Tables["Titles"].Rows[0]; dsPubs.Tables["Titles"].Rows.Remove(drDelRow); Phương thức này chỉ đánh dấu hàng được xoá, gọi RejectChanges sẽ undo việc xoá Slide 23 of 21Ver. 1.0 Object-Oriented Programming Using C# Xác nhận thay đổi dữ liệu Để cập nhật DataSet, dùng các phương thức thích hợp để chỉnh sửa bảng, rồi gọi AcceptChanges hoặc RejectChanges cho mỗi dòng hoặc cho toàn bộ bảng Bạn có thể kiểm tra trạng thái của hàng qua thuộc tính RowState, các trạng thái: Slide 24 of 21Ver. 1.0 Object-Oriented Programming Using C# Cập nhật dữ liệu tại nguồn Sau khi update các bảng trong DataSet, chúng ta muốn cập nhật lên data source thì bạn dùng phương thức Update của đối tượng DataAdapter, nó liên kết giữa DataSet và data source Nó xác định các thay đổi của dữ liệu và thực thi câu lệnh SQL tương ứng (Insert, Update hoặc Delete). Slide 25 of 21Ver. 1.0 Object-Oriented Programming Using C# Cập nhật dữ liệu tại nguồn Chỉ rõ các tham số cập nhật SqlCommand cmd = new SqlCommand(); cmd.CommandText = "Insert into titles(title_id, title, type) values(@t_id,@title,@type)"; cmd.Parameters.Add("@t_id",SqlDbType.VarChar,6,"title_id"); cmd.Parameters.Add("@title",SqlDbType.VarChar,80,"title"); cmd.Parameters.Add("@type",SqlDbType.Char,12,"type"); adp.InsertCommand = cmd; adp.Update(dsPubs, "titles"); Tự động phát sinh update SqlCommandBuilder sqlCommBuild = new SqlCommandBuilder(adp); adp.Update(dsPubs,"titles"); MessageBox.Show(sqlCommBuild.GetInsertCommand().ToString()); Slide 26 of 21Ver. 1.0 Object-Oriented Programming Using C# Thiết lập nhanh Data Source cho project Xây dựng form hiển thị và thao tác dữ liệu Thông qua thao tác kéo thả từ Data Source Sử dụng chức năng Wizard Slide 27 of 21Ver. 1.0 Object-Oriented Programming Using C# Tạo một ứng dụng Windows Application. Trong menu Data | Add New Data Source Sử dụng chức năng Wizard Slide 28 of 21Ver. 1.0 Object-Oriented Programming Using C# Tạo New Connection Sử dụng chức năng Wizard Slide 29 of 21Ver. 1.0 Object-Oriented Programming Using C# Hoàn tất khai báo Data Source Sử dụng chức năng Wizard Chuỗi kết nối Slide 30 of 21Ver. 1.0 Object-Oriented Programming Using C# Lưu chuỗi kết nối trong file cấu hình Sử dụng chức năng Wizard Tên của chuỗi kết nối Slide 31 of 21Ver. 1.0 Object-Oriented Programming Using C# Chọn bảng dữ liệu Sử dụng chức năng Wizard Bảng SinhVien và các trường Tên của DataSet Slide 32 of 21Ver. 1.0 Object-Oriented Programming Using C# Wizard sẽ tạo ứng dụng với Data Source Sử dụng chức năng Wizard Form in Design View Data Source Windows Slide 33 of 21Ver. 1.0 Object-Oriented Programming Using C# Kéo thả binding control vào Form − Trong cửa sổ Data Source − Chọn bảng cần sử dụng − Thiết lập view là DataGridView hay Details − Kích chọn vào dấu mũi tên xuống sau tên bảng Sử dụng chức năng Wizard Slide 34 of 21Ver. 1.0 Object-Oriented Programming Using C# Kéo Table thả vào Form − Tự động tạo các binding control cho tableKéo thả binding control vào Form Sử dụng chức năng Wizard Detail Slide 35 of 21Ver. 1.0 Object-Oriented Programming Using C# Bổ sung DataGridView cho Form − Thay đổi Table sang DataGrid − Kéo Table trong Data Source thả vào Form Sử dụng chức năng Wizard DataGridView Slide 36 of 21Ver. 1.0 Object-Oriented Programming Using C# Kết quả ứng dụng Sử dụng chức năng Wizard Chưa viết code! Slide 37 of 21Ver. 1.0 Object-Oriented Programming Using C# Thiết kế DataSet Tùy chỉnh form dữ liệu Gắn dữ liệu trong WinForms Gắn dữ liệu trong WebForms Thiết kế và gắn kết dữ liệu Slide 38 of 21Ver. 1.0 Object-Oriented Programming Using C# Tên kết nối Kiểu truy vấn − Câu lệnh SQL − Hoặc Stored Procedure mới − Hoặc Stored Procedure đã tồn tại Các chi tiết lựa chọn câu truy vấn Tùy chỉnh cấu hình DataAdapter Slide 39 of 21Ver. 1.0 Object-Oriented Programming Using C# Cách gắn đơn giản SqlConnection con = new SqlConnection("Server=TIENPT\\SQL;Database=Northwind;Uid = sa; Pwd = admin123"); SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con); DataSet ds = new DataSet(); adp.Fill(ds,"Products"); txtProduct.DataBindings.Add("Text", ds.Tables[0], "ProductName"); Cách gắn phức tạp SqlConnection con = new SqlConnection("Server=TIENPT\\SQL;Database=Northwind;Uid = sa; Pwd = admin123"); SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con); DataSet ds = new DataSet(); adp.Fill(ds,"Products"); dgvProducts.DataSource = ds.Tables[0];//DataGridView dgvProducts.Refresh(); Gắn dữ liệu trong WinForms Slide 40 of 21Ver. 1.0 Object-Oriented Programming Using C# Gắn dữ liệu chỉ đọc protected void Page_Load(object sender, EventArgs e) { SqlConnection conn = new SqlConnection("Server=TIENPT\ \SQL;Database=NorthWind;Uid=sa;Pwd=admin123"); conn.Open(); SqlCommand cmd = new SqlCommand("Select * from Products", conn); SqlDataReader dr = cmd.ExecuteReader(); grvProducts.DataSource = dr; grvProducts.DataBind(); } Gắn dữ liệu trong WebForms
File đính kèm:
- bai_giang_ngon_ngu_lap_trinh_nang_cao_bai_8_ly_anh_tuan.pdf