Bài giảng Lập trình Net với C# - Chương 5: Lập trình CSDL với C#

27 13 0
Bài giảng Lập trình Net với C# - Chương 5: Lập trình CSDL với C#

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Lập trình Net với C# - Chương 5: Lập trình CSDL với C# tổng quan ADO .Net; .Net Data Provider; lấy dữ liệu dùng ADO .Net; đối tượng DataSet; thiết kế và gắn kết dữ liệu; tích hợp XML; tạo ứng dụng ADO.Net.

7/5/16 LẬP TRÌNH CSDL VỚI C# PHAN TRỌNG TIẾN BM Công nghệ phần mềm Khoa Công nghệ thông tin, VNUA Email: phantien84@gmail.com Website: http://timoday.edu.vn 7/5/16 Lập trình CSDL với C# Giới thiệu chung q  ADO.NET cải tiến ADO (Active Data Objects), sử dụng để tương tác với CSDL nguồn liệu hỗ trợ NET q  ADO.NET cung cấp nhiều component cho tạo ứng dụng phân tán, chia sẻ liệu q  ADO.NET truy xuất đồng tới nguồn liệu khác SQL Server XML, nguồn liệu qua OLE DB ODBC 7/5/16 Lập trình CSDL với C# 7/5/16 Nội dung Tổng quan Tổng quan ADO Net Net Data Provider Demo: Lấy liệu dùng ADO Net Đối tượng DataSet Thiết kế gắn kết liệu Tích hợp XML Lab: Tạo ứng dụng ADO.Net 1.  2.  3.  4.  5.  6.  7.  8.  7/5/16 Lập trình CSDL với C# Mục đích chương q  Chương cung cấp sinh viên kiến thức cần thiết để tạo ứng dụng mức cao truy cập liệu dùng C# q  Sau sinh viên có thể: q Liệt kê lợi ích ADO Net q Tạo ứng dụng dùng ADO Net q Liệt kê thành phần đối tượng ADO.Net chức q Dùng VS.Net để thiết kế gắn kết liệu q Giải thích cách tích hợp XML ADO.Net 7/5/16 Lập trình CSDL với C# 7/5/16 Tổng quan q  Bạn học cách sử dụng ADO Net q  Cách sử dụng đối tượng DataSet q  Bạn học cách thiết kế liệu VS.Net cách gắn liệu lên WinForm WebForm q  Cuối bạn học cách tích hợp XML vào ADO Net 7/5/16 Lập trình CSDL với C# Tổng quan ADO Net q  Giới thiệu ADO Net q  Các lợi ích ADO Net 7/5/16 Lập trình CSDL với C# 7/5/16 Giới thiệu ADO Net 7/5/16 Lập trình CSDL với C# Giới thiệu ADO.Net q  ADO.Net tập lớp cho phép ứng dụng Net đọc cập nhật thông tin DB nơi lưu trữ liệu khác Namespace: System.Data q  ADO.Net cung cấp đồng cách truy cập nguồn liệu khác SQL Server, OLE DB, nguồn liệu không quan hệ MS Exchange, tài liệu XML q  ADO.Net cải tiến khả disconnect tới liệu 7/5/16 Lập trình CSDL với C# 7/5/16 Giới thiệu ADO.Net q  ADO.Net cung cấp bốn Net Data Providers: q .Net Data Provider cho SQL Server q .Net Data Provider cho OLE DB q .Net Data Provider cho ODBC q .Net Data Provider cho Oracle q  ADO.Net cung cấp nhiều công cụ cho việc đọc, cập nhật, thêm xóa liệu Nhiều đối tượng thư viện tương tự nhận diện qua tên tiền tố chúng ví dụ SqlDataReader OleDbDataReader hai cung cấp đọc ghi từ nguồn liệu 7/5/16 Lập trình CSDL với C# Các lợi ích ADO.Net q  Tương tự ADO q  Được thiết kế cho liệu không kết nối q  Nằm nội Net Framework nên dễ dàng việc sử dụng ngôn ngữ để phát triển q  Hỗ trợ XML q ADO XML có trước khơng tương thích q ADO dựa sở liệu quan hệ q XML dựa sở liệu phân cấp q ADO.Net kết hợp hai công nghệ lại với 7/5/16 Lập trình CSDL với C# 10 7/5/16 .Net Data Provider q  Net Data Provider cho phép truy cập nguồn liệu xác định: q System.Data.SqlClient dùng truy câp SQL Server 7.0 trở lên q System.Data.OleDb dùng truy cập nguồn liệu hỗ trợ OLE DB q System.Data.Odbc q System.Data.OracleClient q  Dùng đối tượng Connection q Kết nối tới Database q  Dùng đối tượng Command q Thực thi câu lệnh tuỳ chọn trả liệu từ q Dùng đối tượng Command với Stored Procedure q  Dùng đối tượng DataReader q đối tượng để tạo luồng liệu đọc q  Dùng đối tượng DataAdapter q đối tượng để trao đổi liệu nguồn DataSet 7/5/16 Lập trình CSDL với C# 11 Đối tượng Connection q  Dùng để kết nguồn liệu, chuỗi kết nối thiết lập qua thuộc tính ConnectionString q  SqlConnection SqlConnection conSQL = new SqlClient.SqlConnection( ); conSQL.ConnectionString = “Server = localhost; DataSource = Northwind; Uid = sa; Pwd = admin123;”; conSQL.Open( ); q  OleDbConnection OleDbConnection conAccess = new OleDb.OleDbConnection( ); conAccess.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source=c:\NWind.MDB”; conAccess.Open( ); 7/5/16 Lập trình CSDL với C# 12 7/5/16 Đối tượng Command q  Được dùng để thực câu truy vấn (query) tuỳ chọn trả kết q  Có thể dùng với stored query procedure chấp nhận tham số truyền vào Tên Mô tả CommandText Thuộc tính định câu lệnh SQL tên Stored procedure CommandType Thuộc tính xác định kiểu câu lệnh SQL Connection Thuộc tính cung cấp vào đối tượng Connection CreateParameter Phương thức để cung cấp Parameter câu lệnh SQL 7/5/16 Lập trình CSDL với C# 13 Đối tượng Command q  Có hai cách để tạo đối tượng Command: q  Có ba cách để thực thi Command: q Sử dụng Contructor q ExecuteReader Command q Sử dụng phương thức CreateCommand q ExecuteScalar q ExecuteNonQuery q ExecuteXMLReader SqlCommand commSQL = new SqlCommand( ); commSQL.Connection = conSQL; commSQL.CommandText = "Select Count(*) from Products”; MessageBox.Show(commSQL.ExecuteScalar( ).ToString); 7/5/16 Lập trình CSDL với C# 14 7/5/16 Đối tượng Command với Stored Procedure q  Tạo đối tượng Command q  Thiết lập CommandType StoredProcedure q  Dùng phương thức Add để tạo thiết lập biến (Parameter) q  Dùng thuộc tính ParameterDirection để thiết lập kiểu biến q  Gọi phương thức ExecuteReader q  Dùng đối tượng DataReader để hiển thị duyệt qua ghi đóng kết thúc q  Truy cập đầu trả biến 7/5/16 Lập trình CSDL với C# 15 Demo: Đối tượng Command q  Bạn thảo Stored Procedures: [CustOrdersDetail] CSDL NorthWind ALTER PROCEDURE [dbo].[CustOrdersDetail] @OrderID int AS SELECT ProductName, UnitPrice=ROUND(Od.UnitPrice, 2), Quantity, Discount=CONVERT(int, Discount * 100), ExtendedPrice=ROUND(CONVERT(money, Quantity * (1 - Discount) * Od.UnitPrice), 2) FROM Products P, [Order Details] Od WHERE Od.ProductID = P.ProductID and Od.OrderID = @OrderID q  Code C#: private void btnFind_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection("Server=TIENPT\ \SQL;Database=NorthWind;Uid=sa;Pwd=admin123"); if (conn.State != ConnectionState.Open) { conn.Open(); } 7/5/16 Lập trình CSDL với C# 16 7/5/16 Demo: Đối tượng Command SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "CustOrdersDetail"; SqlParameter orderID = new SqlParameter("@OrderID", SqlDbType.Int); orderID.Value = 10250; cmd.Parameters.Add(orderID); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { MessageBox.Show(dr[0].ToString()); } dr.Close(); } 7/5/16 Lập trình CSDL với C# 17 Đối tượng DataReader q  Đọc liệu SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT [CustomerID],[CompanyName], [ContactName],[ContactTitle],[Address] FROM [Customers]"; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { MessageBox.Show(dr.GetString(0) + " - " + dr.GetString(1) +" "+ dr.GetString(2)); } dr.Close(); q  Lấy thông tin q  Trả nhiều tập hợp kết 7/5/16 Lập trình CSDL với C# 18 7/5/16 Đối tượng DataAdapter 7/5/16 Lập trình CSDL với C# 19 Đối tượng DataAdapter q  Được sử dụng để trao đổi liệu data source đối tượng DataSet q  Có thể lấy liệu insert vào đối tượng DataTable DataSet cập nhật thay đổi DataSet trở lại data source q  Có cách tạo đối tượng DataAdapter q Sử dụng đối tượng Connection tồn q Mở kết nối Connection cần thiết q  Dùng phương thức Fill để đặt dự liệu vào DataSet DataTable, dùng phương thức Update để đồng liệu thay đổi tới data source 7/5/16 Lập trình CSDL với C# 20 10 7/5/16 Tổng quan liệu khơng kết nối 7/5/16 Lập trình CSDL với C# 25 Tổng quan liệu không kết nối q  Mỗi công nghệ truy cập liệu cải thiện khái niêm không kết nối, đến ADO.Net cung cấp giải pháp cách đầy đủ q  ADO.Net thiết kế dùng cho Internet q  ADO.Net sử dụng XML truyền tải định dạng liệu q  ADO.Net cung cấp đối tượng cho việc caching liệu máy client Đối tượng DataSet 7/5/16 Lập trình CSDL với C# 26 13 7/5/16 Đối tượng DataSet 7/5/16 Lập trình CSDL với C# 27 Cư trú liệu DataSet q  Cư trú liệu DataSet từ RDBMS SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con); DataSet ds = new DataSet(); adp.Fill(ds, "Products"); q  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(); 7/5/16 Lập trình CSDL với C# 28 14 7/5/16 Sử dụng Relationship DataSet q  Tạo Relationship DataRelation relPubsTitle = new DataRelation("PubsTitles",dsPubs.Tables["Publishers"].Columns[ "pub_id"],dsPubs.Tables["Titles"].Columns["pub_id"]); dsPubs.Relations.Add(relPubsTitle); q  Truy cập liệu quan hệ //Lay ban ghi dau tien bang Publishers DataRow pubRow = dsPubs.Tables["Publishers"].Rows[0]; //Lay cac ban ghi cua quan he bang Publishers va Titles DataRow[] titleRows = pubRow.GetChildRows("PubsTitles"); 7/5/16 Lập trình CSDL với C# 29 Sử dụng Constraint q  Bạn tạo ràng buộc riêng cho DataSet copy ràng buộc tồn từ data source q  Tạo ràng buộc: áp dụng kiểu ràng buộc q ForeignKeyConstraints: ràng buộc xảy hàng cập nhật hàng cha update delete Sau bảng giá trị cho tính DeleteRule UpdateRule Cascade delete update ghi theo ghi cha SetNull Thiết lập giá trị liên quan thành DBNull SetDefault Thiết lập giá trị liên quan theo giá trị mặc định None Không tác động tới hàng liên quan DataColumn colParent = dsPubs.Tables["Publishers"].Columns["pub_id"]; DataColumn colChild = dsPubs.Tables["Titles"].Columns["pub_id"]; ForeignKeyConstraint fkcPubsTitles = new ForeignKeyConstraint("PubsTitlesFKC",colParent,colChild); fkcPubsTitles.DeleteRule = Rule.SetNull; fkcPubsTitles.UpdateRule = Rule.Cascade; dsPubs.Tables["Titles"].Constraints.Add(fkcPubsTitles); dsPubs.EnforceConstraints = true; 7/5/16 Lập trình CSDL với C# 30 15 7/5/16 Sử dụng Constraint q UniqueConstraints: ràng buộc đảm bảo giá trị cột nhiều cột UniqueConstraint ucTitles = new UniqueConstraint("UniqueTitles", dsPubs.Tables["Titles"].Columns["title"]); dsPubs.EnforceConstraints = true; q  Sử dụng Constraint tồn q Nếu tồn ràng buộc RDBMS, copy trực tiếp tới DataSet q Sử dụng phương thức FillSchema để copy SqlConnection = new SqlConnection("Server=TIENPT\\SQL;Database=Northwind;Uid = sa; Pwd = admin123"); SqlDataAdapter adp = new SqlDataAdapter("Select title_id,title,type,price from Titles",con); adp.FillSchema(dsPubs, SchemaType.Source, "Titles"); adp.Fill(dsPubs,"Titles"); //Thực cập nhật liệu dsPubs cập nhật lại nguồn adp.Fill(dsPubs,"Titles"); 7/5/16 Lập trình CSDL với C# 31 Cập nhật liệu DataSet q  Thêm Row DataRow drNewRow = dsPubs.Tables["Titles"].NewRow(); drNewRow["title"] = "New Book"; drNewRow["type"] = "business"; dsPubs.Tables["Titles"].Rows.Add(drNewRow); q  Thay đổi Rows DataRow drChangeRow = dsPubs.Tables["Titles"].Rows[0]; drChangeRow.BeginEdit(); drChangeRow["title"] = drChangeRow["title"].ToString() + " 1"; drChangeRow.EndEdit(); q  Xóa liệu DataRow drDelRow = dsPubs.Tables["Titles"].Rows[0]; dsPubs.Tables["Titles"].Rows.Remove(drDelRow); Phương thức đánh dấu hàng xoá, gọi RejectChanges undo việc xố 7/5/16 Lập trình CSDL với C# 32 16 7/5/16 Xác nhận thay đổi liệu q  Để cập nhật DataSet, dùng phương thức thích hợp để chỉnh sửa bảng, gọi AcceptChanges RejectChanges cho dịng cho tồn bảng q  Bạn kiểm tra trạng thái hàng qua thuộc tính RowState, trạng thái: Unchanged Khơng có thay đổi làm Added Hàng liệu bị thêm tới bảng Modified Một số thứ hàng bị thay đổi Deleted Hàng liệu bị xoá phương thức Delete Detached Hàng liệu bị xoá hàng liệu tạo phương thức Add khơng gọi 7/5/16 Lập trình CSDL với C# 33 Cập nhật liệu nguồn q  Sau update bảng DataSet, muốn cập nhật lên data source bạn dùng phương thức Update đối tượng DataAdapter, liên kết DataSet data source q  Nó xác định thay đổi liệu thực thi câu lệnh SQL tương ứng (Insert, Update Delete) 7/5/16 Lập trình CSDL với C# 34 17 7/5/16 Cập nhật liệu nguồn q  Chỉ rõ 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"); q  Tự động phát sinh update SqlCommandBuilder sqlCommBuild = new SqlCommandBuilder(adp); adp.Update(dsPubs,"titles"); MessageBox.Show(sqlCommBuild.GetInsertCommand().ToString()); 7/5/16 Lập trình CSDL với C# 35 Demo: Sử dụng DataSet 7/5/16 Lập trình CSDL với C# 36 18 7/5/16 Sử dụng chức Wizard •  Thiết lập nhanh Data Source cho project •  Xây dựng form hiển thị thao tác liệu •  Thơng qua thao tác kéo thả từ Data Source 7/5/16 Lập trình CSDL với C# 37 Sử dụng chức Wizard q  Tạo ứng dụng Windows Application q  Trong menu Data | Add New Data Source… 7/5/16 Lập trình CSDL với C# 38 19 7/5/16 Sử dụng chức Wizard q  Tạo New Connection 7/5/16 39 Lập trình CSDL với C# Sử dụng chức Wizard q  Hoàn tất khai báo Data Source Chuỗi kết nối 7/5/16 Lập trình CSDL với C# 40 20 7/5/16 Sử dụng chức Wizard q  Lưu chuỗi kết nối file cấu hình Tên chuỗi kết nối 7/5/16 Lập trình CSDL với C# 41 Sử dụng chức Wizard q  Chọn bảng liệu Bảng Sinhvien field Tên DataSet 7/5/16 Lập trình CSDL với C# 42 21 7/5/16 Sử dụng chức Wizard q  Wizard tạo ứng dụng với Data Source Form in Design View Data Sources Windows 7/5/16 Lập trình CSDL với C# 43 Sử dụng chức Wizard q  Kéo thả binding control vào Form q Trong cửa sổ Data Source q Chọn bảng cần sử dụng q Thiết lập view DataGridView hay Details q Kích chọn vào dấu mũi tên xuống sau tên bảng 7/5/16 Lập trình CSDL với C# 44 22 7/5/16 Sử dụng chức Wizard q  Kéo Table thả vào Form q Tự động tạo binding control cho table Detail 7/5/16 Lập trình CSDL với C# 45 Sử dụng chức Wizard q  Bổ sung DataGridView cho Form q Thay đổi Table sang DataGrid q Kéo Table Data Source thả vào Form DataGridView 7/5/16 Lập trình CSDL với C# 46 23 7/5/16 Sử dụng chức Wizard q  Kết ứng dụng Chưa viết code! 7/5/16 Lập trình CSDL với C# 47 Demo: Sử dụng chức Wizard 7/5/16 Lập trình CSDL với C# 48 24 7/5/16 Thiết kế gắn kết liệu q  Thiết kế DataSet q  Tùy chỉnh form liệu q  Gắn liệu WinForms q  Gắn liệu WebForms 7/5/16 Lập trình CSDL với C# 49 Tùy chỉnh cấu hình DataAdapter q  Tên kết nối q  Kiểu truy vấn q Câu lệnh SQL q Hoặc Stored Procedure q Hoặc Stored Procedure tồn q  Các chi tiết lựa chọn câu truy vấn 7/5/16 Lập trình CSDL với C# 50 25 7/5/16 Gắn liệu WinForms q  Cách gắn đơn giản SqlConnection = 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"); q  Cách gắn phức tạp SqlConnection = 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(); 7/5/16 Lập trình CSDL với C# 51 Gắn liệu WebForms q  Gắn liệu đọ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(); } 7/5/16 Lập trình CSDL với C# 52 26 7/5/16 Tài liệu tham khảo q  Windows Forms Programming With C# - WIN0095 – Aptech Worldwide q  https://msdn.microsoft.com/en-us/library/e80y5yhx(v=vs 110).aspx q  http://www.worldbestlearningcenter.com/ 7/5/16 Lập trình CSDL với C# 53 27 ... DataGridView 7/5/16 Lập trình CSDL với C# 46 23 7/5/16 Sử dụng chức Wizard q  Kết ứng dụng Chưa viết code! 7/5/16 Lập trình CSDL với C# 47 Demo: Sử dụng chức Wizard 7/5/16 Lập trình CSDL với C# 48 24 7/5/16... } 7/5/16 Lập trình CSDL với C# 22 11 7/5/16 Demo: Lấy liệu dùng ADO Net q  Bạn học cách lấy liệu từ CSDL SQL Server việc dùng đối tượng SQLDataAdapter NET 7/5/16 Lập trình CSDL với C# 23 Đối... VS .Net cách gắn liệu lên WinForm WebForm q  Cuối bạn học cách tích hợp XML vào ADO Net 7/5/16 Lập trình CSDL với C# Tổng quan ADO Net q  Giới thiệu ADO Net q  Các lợi ích ADO Net 7/5/16 Lập trình

Ngày đăng: 08/05/2021, 11:46

Tài liệu cùng người dùng

Tài liệu liên quan