Bài giảng Lập trình hướng đối tượng - Chương 12: Truy xuất database trong chương trình VC#

12.0 Dẫn nhập

12.1 Tổng quát về truy xuất database

12.2 Truy xuất database thông qua ADO .Net

12.3 Thí dụ lập trình dùng ADO .Net

12.4 Databinding (Kết nối động đến dữ liệu)

12.5 Thí dụ về databinding mà không viết code

12.6 Thí dụ về databinding có viết code khởi tạo

12.7 Kết chương

pdf 19 trang phuongnguyen 5420
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 12: Truy xuất database trong chương trình VC#", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Chương 12: Truy xuất database trong chương trình VC#

Bài giảng Lập trình hướng đối tượng - Chương 12: Truy xuất database trong chương trình VC#
 Chương 12
 Truy xuất database trong chương trình VC#
 12.0 Dẫn nhập
 12.1 Tổng quát về truy xuất database
 12.2 Truy xuất database thông qua ADO .Net
 12.3 Thí dụ lập trình dùng ADO .Net
 12.4 Databinding (Kết nối ₫ộng ₫ến dữ liệu)
 12.5 Thí dụ về databinding mà không viết code
 12.6 Thí dụ về databinding có viết code khởi tạo
 12.7 Kết chương
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 1
12.0 Dẫn nhập 
‰ Chương này giới thiệu cách thức dùng các ₫ối tượng trong thư 
 viện ADO .Net ₫ể truy xuất database dễ dàng, tin cậy. 
‰ Chương này cũng giới thiệu cách thức dùng khả năng 
 databinding của các ₫ối tượng giao diện trong môi trường VS .Net 
 ₫ể xây dựng chương trình truy xuất database ₫ược dễ dàng, 
 nhanh chóng, tin cậy, và nhiều trường hợp không cần viết code 
 cho chương trình.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 2
12.1 Tổng quát về truy xuất database
‰ Mục tiêu của chương trình là xử lý các dữ liệu của nó. Dữ liệu của 
 chương trình có thể rất nhiều và ₫a dạng phong phú về tính chất. 
 Trong chương 7, chúng ta ₫ã giới thiệu cách lập trình ₫ể ghi/₫ọc 
 dữ liệu cổ ₫iển hay ₫ối tượng ra/vào file.
‰ Hầu hết các ứng dụng hiện nay (nhất là các ứng dụng nghiệp vụ) 
 ₫ều phải truy xuất dữ liệu rất lớn. Thí dụ chương trình quản lý công 
 dân Việt Nam phải xử lý hàng trăm triệu hồ sơ chứa thông tin về
 các công dân.
‰ Việc xử lý dữ liệu bao gồm nhiều tác vụ như tạo file mới với cấu 
 trúc record cụ thể, thêm/bớt/hiệu chỉnh/duyệt các record, tìm kiếm 
 các record thỏa mãn 1 tiêu chuẩn nào ₫ó,... Để thực hiện các tác 
 vụ trên (nhất là tìm kiếm record thỏa mãn 1 số tiêu chuẩn nào ₫ó) 
 hiệu quả, tin cậy, ta cần nhiều kiến thức khác nhau và phải tốn 
 nhiều công sức.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 3
12.1 Tổng quát về truy xuất database
‰ Hiện nay các record dữ liệu có cùng cấu trúc (thí dụ như các 
 record sinh viên) cần xử lý của chương trình thường ₫ược lưu giữ
 trong 1 bảng dữ liệu (table). Nhiều bảng dữ liệu có mối quan hệ
 lẫn nhau ₫ược chứa trong 1 database quan hệ. Có nhiều ₫ịnh 
 dạng database quan hệ khác nhau ₫ang ₫ược dùng như FoxPro, 
 Access, SQL Server, MySQL, Oracle...
‰ Để giải phóng ứng dụng khỏi các chi tiết quản lý database, người 
 ta ₫ã xây dựng ứng dụng ₫ặc biệt : DBMS (Database 
 Management System). 
‰ Mỗi DBMS cung cấp ít nhất 1 Provider. Provider là module phần 
 mềm cung cấp các hàm chức năng ₫ể chương trình ứng dụng gọi 
 khi cần thiết hầu truy xuất dữ liệu trong database mà không cần 
 biết chi tiết về cấu trúc vật lý của các record dữ liệu trong 
 database.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 4
12.1 Tổng quát về truy xuất database
‰ Mỗi lần cần truy xuất dữ liệu trong database, ứng dụng sẽ nhờ
 DBMS thực hiện dùm thông qua việc dùng 1 trong các cấp dịch vụ 
 sau ₫ây (từ cao xuống thấp) :
 ƒ Các lệnh truy vấn của ngôn ngữ SQL
 ƒ Các ₫ối tượng trong thư viện ADO .Net (ActiveX Data Objects)
 ƒ Các ₫ối tượng trong thư viện ADO (ActiveX Data Objects) 
 ƒ Các ₫ối tượng trong thư viện DAO (Data Access Objects)
 ƒ Các hàm trong thư viện ODBC (Open Database Connectivity)
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 5
12.1 Tổng quát về truy xuất database
‰ Ngôn ngữ truy vấn SQL là ngôn ngữ phi thủ tục, nó cung cấp 1 tập 
 các lệnh SQL rất mạnh và dễ dàng dùng ₫ể xử lý database. Thí
 dụ ₫ể tìm tất cả sinh viên nam quê ở Bến tre ₫ang theo học tại 
 trường Bách Khoa Tp.HCM, ta chỉ cần dùng 1 lệnh SQL như sau :
 Select * from Sinhvien where Phai = 1 and Quequan = 71
‰ Thư viện ADO .Net cung cấp 1 số ₫ối tượng ₫ể giúp người lập 
 trình truy xuất database rất dễ dàng thông qua mô hình hướng ₫ối 
 tượng.
‰ Ngôn ngữ VC# cho phép ta kết hợp 2 cấp truy xuất database dễ
 dàng, ₫ơn giản nhất : dùng các ₫ối tượng ADO .Net ₫ể thực hiện 
 các lệnh truy vấn SQL.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 6
12.2 Truy xuất database thông qua ADO .Net
‰ Các ₫ối tượng ADO .Net ₫ược tổ chức theo từng namespace, mỗi 
 namespace chứa ₫ối tượng dùng cùng Provider truy xuất 
 database :
 ƒ System.Data.OleDb chứa các ₫ối tượng ADO .Net ₫ể truy xuất 
 database do bộ Microsoft Office quản lý như Visual FoxPro, 
 Access, Excel,...
 ƒ System.Data.Sql và System.Data.SqlClient chứa các ₫ối tượng 
 ADO .Net ₫ể truy xuất database do serer "SQLServer" quản lý.
 ƒ System.Data.Odbc chứa các ₫ối tượng ADO .Net ₫ể truy xuất 
 database thông qua chuẩn giao tiếp ODBC. Hầu hết các hệ
 quản trị database (DBMS) hiện nay ₫ều hỗ trợ chuẩn giao tiếp 
 này.
 ƒ ...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 7
12.2 Truy xuất database thông qua ADO .Net
‰ Trong từng namespace, ₫ể lập trình truy xuất database, ta thường 
 dùng các ₫ối tượng ADO .Net chính yếu sau ₫ây :
 1. preConnection, trong ₫ó pre là phần tiếp ₫ầu ngữ miêu tả tên 
 namespace như OleDb, Obdc, Sql, SqlClient,... Đối tượng này 
 có chức năng quản lý cầu nối ₫ến nguồn database mà chúng 
 ta cần truy xuất.
 2. preCommand có chức năng quản lý lệnh truy vấn SQL mà ta 
 cần thực hiện.
 3. preDataReader cho phép duyệt ₫ọc/xử lý các record từ 1 bảng 
 dữ liệu.
 4. preDataAdapter quản lý 1 tập các lệnh truy vấn và 1 
 connection tới nguồn database ₫ể cho phép việc ₫ọc/ghi dữ
 liệu.
 5. ...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 8
12.3 Thí dụ lập trình dùng ADO .Net
‰ Thí dụ trong một tổ chức quản lý việc nhập/xuất/tồn các sản 
 phẩm, ta dùng 1 database quản lý dữ liệu. Database chứa 3 bảng 
 dữ liệu sau ₫ây :
 ƒ SPNhap chứa số lượng các sản phẩm nhập, mỗi record có
 các field như MaSP, Soluong,...
 ƒ SPXuat chứa số lượng các sản phẩm xuất, mỗi record có các 
 field như MaSP, Soluong,...
 ƒ SPTon chứa số lượng các sản phẩm tồn kho, mỗi record có
 các field như MaSP, Soluong,...
‰ Thường thì người làm công tác nghiệp vụ sẽ thực hiện việc cập 
 nhật bảng sản phẩm nhập, bảng sản phẩm xuất theo thời gian. 
 Chúng ta hãy viết chương trình tạo bảng sản phẩm tồn theo nội 
 dung hiện hành của 2 bảng sản phẩm nhập/xuất.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 9
12.3 Thí dụ lập trình dùng ADO .Net
1. Chạy VS .Net, chọn menu File.New.Project ₫ể hiển thị cửa sổ
 New Project.
2. Mở rộng mục Visual C# trong TreeView "Project Types", chọn 
 mục Windows, chọn icon "Console Application" trong listbox 
 "Templates" bên phải, thiết lập thư mục chứa Project trong listbox 
 "Location", nhập tên Project vào textbox "Name:" (td. 
 TaoSPTon), click button OK ₫ể tạo Project theo các thông số ₫ã 
 khai báo.
3. Ngay sau khi Project vừa ₫ược tạo ra, cửa sổ soạn code cho 
 chương trình ₫ược hiển thị. Thêm lệnh using sau ₫ây vào ₫ầu file 
 :
 using System.data.OleDb;
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 10
12.3 Thí dụ lập trình dùng ADO .Net
4. Viết code cho thân hàm Main như sau :
 static void Main(string[] args) {
 //₫ịnh nghĩa các biến ₫ối tượng cần dùng
 String ConnectionString;
 OleDbConnection cn;
 OleDbCommand cmd = new OleDbCommand();
 //xây dựng chuỗi ₫ặc tả database cần truy xuất
 ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data 
 Source=d:\\MyDatabase.mdb;";
 //tạo ₫ối tượng Connection ₫ến database & mở Connection
 cn = new OleDbConnection(ConnectionString); 
 cn.Open();
 //cấu hình cho ₫ối tượng Command
 cmd.Connection = cn;
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 11
12.3 Thí dụ lập trình dùng ADO .Net
 //thực hiện lệnh SQL xóa bảng SPTon nếu ₫ã có
 cmd.CommandText = "Drop Table SPTon";
 try { cmd.ExecuteNonQuery(); }
 catch { }
 //thực hiện lệnh SQL tạo bảng sản phẩm tồn
 cmd.CommandText = "Create Table SPTon(MaSP Text, Soluong int)";
 cmd.ExecuteNonQuery();
 //thực hiện lệnh SQL tạo các sản phẩm tồn có MaSP tồn tại trong bảng SPNhap
 cmd.CommandText = "Insert into SPTon select SPNhap.MaSP, 
 IIf(IsNull(SPNhap.Soluong), 0, SPNhap.Soluong)-
 IIf(IsNull(SPXuat.Soluong), 0, SPXuat.Soluong) as Soluong from 
 SPXuat right join SPNhap on SPXuat.MaSP = SPNhap.MaSP";
 cmd.ExecuteNonQuery();
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 12
12.3 Thí dụ lập trình dùng ADO .Net
 //thực hiện lệnh SQL tạo bảng sản phẩm Tam
 cmd.CommandText = "Create Table Tam(MaSP Text, Soluong int)";
 cmd.ExecuteNonQuery();
 //thực hiện lệnh SQL tạo các sản phẩm tồn có MaSP tồn tại trong bảng SPXuat
 cmd.CommandText = "Insert into Tam select SPXuat.MaSP, 
 IIf(IsNull(SPNhap.Soluong), 0, SPNhap.Soluong) -
 IIf(IsNull(SPXuat.Soluong), 0, SPXuat.Soluong) as Soluong from 
 SPNhap right join SPXuat on SPXuat.MaSP = SPNhap.MaSP";
 cmd.ExecuteNonQuery();
 //Trộn 2 bảng kết quả lại thành bảng SPTon
 cmd.CommandText = "Insert into SPTon select MaSP, Soluong 
 from Tam where Soluong < 0";
 cmd.ExecuteNonQuery();
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 13
12.3 Thí dụ lập trình dùng ADO .Net
 //Xóa bảng Tam
 cmd.CommandText = "Drop Table Tam";
 cmd.ExecuteNonQuery();
}
5. Chọn menu Debug.Start Debugging ₫ể dịch và chạy ứng dụng.
6. Sau khi ứng dụng chạy xong, chạy ứng dụng Access, mở file 
 database, kiểm tra nội dung bảng SPTon ₫ể ₫ánh giá kết quả có 
 ₫úng yêu cầu không.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 14
12.4 Databinding (Kết nối ₫ộng ₫ến dữ liệu)
Khi viết chương trình truy xuất database có giao diện ₫ồ họa trực 
quan, chúng ta thường phải thực hiện các chức năng chính :
 1. thiết kế các ₫ối tượng giao diện ₫ể giúp người dùng tương tác 
 với database.
 2. viết code thiết lập các thông tin về database, về các dữ liệu 
 cần truy xuất.
 3. mỗi lần record trên database bị thay ₫ổi nội dung (do bị xử lý 
 bên trong, do bị thay ₫ổi vị trí truy xuất), ta phải viết code ₫ọc 
 thông tin của record hiện hành và hiển thị lên các ₫ối tượng 
 giao diện tương ứng.
 4. mỗi lần người dùng cập nhật nội dung trong các ₫ối tượng 
 giao diện, ta phải viết code ₫ọc thông tin của các ₫ối tượng 
 giao diện và ghi lên record tương ứng trên database ₫ể ₫ảm 
 bảo tính nhất quán dữ liệu.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 15
12.4 Databinding (Kết nối ₫ộng ₫ến dữ liệu)
‰ Trong 4 công việc cần thực hiện trong slide trước thì công việc 3 
 và 4 khá nặng nề. VC# cung cấp khả năng Databinding ₫ể giúp 
 người lập trình không cần thực hiện 2 công việc nặng nề này.
‰ Thật vậy, hầu hết các ₫ối tượng giao diện có sẵn trong framework 
 .Net như TextBox, ListBox, ComboBox, TreeView, 
 DataGridView,... ₫ều có thuộc tính DataBindings. Nó giúp ta chỉ
 cần thiết lập sự kết hợp giữa ₫ối tượng giao diện với dữ liệu nào ₫ó 
 trong database ₫ể khi chương trình hoạt ₫ộng, máy sẽ tự hiển thị
 thông tin từ database lên ₫ối tượng giao diện và mỗi khi nội dung 
 ₫ối tượng giao diện bị thay ₫ổi bởi người dùng, máy cũng sẽ tự 
 ₫ộng ghi lên database ₫ể ₫ảm bảo tính nhất quán dữ liệu theo 
 suốt thời gian làm việc.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 16
12.4 Databinding (Kết nối ₫ộng ₫ến dữ liệu)
‰ Việc thiết lập sự kết hợp giữa ₫ối tượng giao diện với dữ liệu trong 
 database có thể thực hiện bằng thiết kế trực quan hay viết code 
 tường minh.
‰ Nếu ta thiết lập sự kết hợp giữa ₫ối tượng giao diện với dữ liệu 
 trong database bằng thiết kế trực quan thì sẽ dẫn ₫ến kết quả hết 
 sức hấp dẫn : xây dựng chương trình truy xuất database mà không 
 cần viết code nào cả. Thí dụ trong mục 10.5 sẽ cho thấy kết luận 
 này.
‰ Tuy nhiên ₫ể chủ ₫ộng hơn trong việc xác lập mối quan hệ ràng 
 buộc giữa các nội dung hiển thị trong các ₫ối tượng giao diện, ta 
 thường sẽ viết ₫oạn code ₫ể thiết lập sự kết hợp giữa ₫ối tượng 
 giao diện với dữ liệu trong database cũng như các ràng buộc giữa 
 chúng. Thí dụ trong mục 10.6 sẽ cho thấy kết luận này.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 17
12.5 Thí dụ về databinding mà không viết code
‰ Trong bộ Microsoft Office, Microsoft có cung cấp 1 database 
 Access có tên là NorthWind.mdb, database này chứa thông tin 
 quản lý của 1 siêu thị ₫iện tửảo, gồm nhiều bảng dữ liệu, trong 
 ₫ócóbảng Customers miêu tả các khách hàng của siêu thị.
‰ Chúng ta hãy thử viết 1 chương trình ₫ơn giản có chức năng hiển 
 thị thông tin về các khách hàng trong bảng Customers cho người 
 dùng xem.
‰ Sau ₫ây là qui trình ₫iển hình ₫ể xây dựng chương trình theo yêu 
 cầu trên mà không cần viết code cho chương trình.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 18
12.5 Thí dụ về databinding mà không viết code
1. Chạy VS .Net, chọn menu File.New.Project ₫ể hiển thị cửa sổ
 New Project.
2. Mở rộng mục Visual C# trong TreeView "Project Types", chọn 
 mục Windows, chọn icon "Windows Application" trong listbox 
 "Templates" bên phải, thiết lập thư mục chứa Project trong listbox 
 "Location", nhập tên Project vào textbox "Name:" (td. DBAccess), 
 click button OK ₫ể tạo Project theo các thông số ₫ã khai báo.
3. Form ₫ầu tiên của ứng dụng ₫ã hiển thị trong cửa sổ thiết kế, việc 
 thiết kế form là quá trình lặp 4 thao tác tạo mới/xóa/hiệu chỉnh 
 thuộc tính/tạo hàm xử lý sự kiện cho từng ₫ối tượng cần dùng 
 trong form.
 Khoa ...  hết form). Hiệu chỉnh thuộc tính (Name) = grdCustomers.
5. Ngay sau khi vẽ xong DataGridView, máy sẽ hiển thị cửa sổ
 "DataGridView Tasks". Nếu sơ xuất làm mất nó thì bạn hãy click 
 chuột vào button nhỏởphía trên phải DataGridView ₫ể hiển thị
 lại. Click chuột vào icon chỉ xuống trong listbox "Choose data 
 source" ₫ể hiển thị cửa sổ hỗ trợ. Click chuột vào mục "Add 
 Project Data Source", ₫ể hiển thị cửa sổ "Choose a Data Source 
 type". chọn icon Database rồi click button Next ₫ể hiển thị cửa sổ
 "Choose Your Database Connection".
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 20
12.5 Thí dụ về databinding mà không viết code
6. Click button New Connection ₫ể hiển thị cửa sổ "Add 
 Connection", xác ₫ịnh Provider truy xuất database, thí dụ như 
 Provider "Microsoft Access Database File (OLE DB)" ₫ể truy xuất 
 file Access, provider "Microsoft SQL Server" ₫ể truy xuất 
 database do SQL Server quản lý... 
7. Xác ₫ịnh database cần truy xuất trong "Database file name" rồi 
 click button OK ₫ể quay về cửa sổ trước. Click buttonNext ₫ể hiển 
 thị cửa sổ "Choose Your Database Object".
8. Mở rộng mục Tables ₫ể hiển thị ₫ầy ₫ủ các tên bảng dữ liệu có
 trong database, duyệt tìm và ₫ánh dấu chọn vào bảng 
 Customers rồi click button Finish ₫ể hoàn tất việc khai báo trực 
 quan.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 21
12.5 Thí dụ về databinding mà không viết code
9. Bây giờ chương trình ₫ã ₫ược viết xong. hãy chọn menu 
 Debug.Start Debugging ₫ể dịch và chạy ứng dụng. Cửa sổứng 
 dụng sẽ hiển thị ₫ối tượng DataGridView, ₫ối tượng này hiển thị 
 ₫ầy ₫ủ danh sách thông tin các khách hàng trong bảng 
 Customers, người dùng có thể "scroll" lên/xuống hay trái/phải ₫ể
 xem thông tin thích hợp.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 22
12.6 Thí dụ về databinding có viết code khởi tạo
‰ Trong bộ Microsoft Office, Microsoft có cung cấp 1 database 
 Access có tên là NorthWind.mdb, database này chứa thông tin 
 quản lý của 1 siêu thị ₫iện tửảo, gồm nhiều bảng dữ liệu và mối 
 quan hệ giữa chúng :
 ƒ Customers : là bảng dữ liệu miêu tả các khách hàng của siêu 
 thị, mỗi khác hàng có các field thông tin như CustomerID, 
 CustomerName,...
 ƒ Orders : là bảng dữ liệu miêu tả các ₫ơn ₫ặt hàng của các 
 khách hàng, mỗi ₫ơn ₫ặt hàng có các field thông tin như 
 CustomerID, OrderID,...
 ƒ OrderDetails : là bảng dữ liệu miêu tả nội dung chi tiết của 
 từng ₫ơn ₫ặt hàng, có các field thông tin như OrderID, 
 ProductID,...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 23
12.6 Thí dụ về databinding có viết code khởi tạo
‰ Chúng ta hãy viết chương trình cho phép người dùng xem thông 
 tin mua hàng của các khách hàng, mỗi thời ₫iểm xem chi tiết 1 
 khách hàng cần khảo sát, người dùng có thể dời tới/dời lui ₫ể xem 
 thông tin khách hàng kế cận, người dùng có thể chọn ngẫu nhiên 
 1 khách hàng ₫ể xem thông tin. Thông tin chi tiết về khách hàng 
 gồm tên, ₫ịa chỉ liên hệ, số phone, số fax, danh sách các ₫ơn ₫ặt 
 hàng ₫ã ₫ặt, nội dung chi tiết của từng ₫ơn ₫ặt hàng.
‰ Sau khi phân tích kỹ yêu cầu của chương trình trên, ta thiết kế 
 ₫ược nội dung chi tiết của form giao diện của chương trình như 
 sau :
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 24
12.6 Thí dụ về databinding có viết code khởi tạo
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 25
12.6 Thí dụ về databinding có viết code khởi tạo
‰ Vai trò cụ thể của các ₫ối tượng giao diện như sau :
 ƒ 2 Button : cho phép người dùng tiến tới/lùi 1 khách hàng.
 ƒ ComboBox : hiển thị tên khách hàng ₫ang chọn khảo sát, nó
 còn cho phép người dùng chọn ngẫu nhiên 1 khác hàng khác 
 nếu muốn.
 ƒ 3 textbox : hiển thị các thông tin về khác hàng như ₫ịa chỉ liên 
 hệ, số phone, số fax.
 ƒ 1 DataGridView : hiển thị danh sách chi tiết về các ₫ơn hàng 
 của khách hàng ₫ang quan tâm.
 ƒ 1 DataGridView : hiển thị danh sách chi tiết về các mặt hàng 
 của ₫ơn hàng ₫ang quan tâm.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 26
Xây dựng ứng dụng databinding bằng VC#
1. Chạy VS .Net, chọn menu File.New.Project ₫ể hiển thị cửa sổ
 New Project.
2. Mở rộng mục Visual C# trong TreeView "Project Types", chọn 
 mục Windows, chọn icon "Windows Application" trong listbox 
 "Templates" bên phải, thiết lập thư mục chứa Project trong listbox 
 "Location", nhập tên Project vào textbox "Name:" (td. DBAccess), 
 click button OK ₫ể tạo Project theo các thông số ₫ã khai báo.
3. Form ₫ầu tiên của ứng dụng ₫ã hiển thị trong cửa sổ thiết kế, việc 
 thiết kế form là quá trình lặp 4 thao tác tạo mới/xóa/hiệu chỉnh 
 thuộc tính/tạo hàm xử lý sự kiện cho từng ₫ối tượng cần dùng 
 trong form.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 27
Xây dựng ứng dụng databinding bằng VC#
4. Nếu cửa sổ ToolBox chưa hiển thị, chọn menu View.Toolbox ₫ể
 hiển thị nó (thường nằm ở bên trái màn hình). Thay ₫ổi kích thước 
 của form lớn ra theo yêu cầu.
5. Duyệt tìm phần tử Button (trong nhóm Common Controls), chọn 
 nó, dời chuột về vị trí thích hợp trong form và vẽ nó với kích thước 
 mong muốn. Hiệu chỉnh thuộc tính Text = "Tới" và thuộc tính 
 (Name) = btnToi. 
6. Lặp lại bước 5 ₫ể vẽ Button thứ 2 với thuộc tính Text = "Lùi" và
 thuộc tính (Name) = btnLui.
7. Duyệt tìm phần tử Label (trong nhóm Common Controls), chọn 
 nó, dời chuột về vị trí thích hợp trong form và vẽ nó với kích thước 
 mong muốn. Hiệu chỉnh thuộc tính Text = "Tên khách hàng :".
8. Lặp lại bước 7 ₫ể vẽ 3 Label còn lại với thuộc tính Text tuần tự là 
 "Địa chỉ liên hệ :", "Số Phone : ", "Số Fax :"
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 28
Xây dựng ứng dụng databinding bằng VC#
9. Duyệt tìm phần tử ComboBox (trong nhóm Common Controls), 
 chọn nó, dời chuột về bên phải Label "Tên khách hàng :" và vẽ
 nó với kích thước mong muốn. Hiệu chỉnh thuộc tính (Name) = 
 cbCust.
10. Duyệt tìm phần tử TextBox (trong nhóm Common Controls), chọn 
 nó, dời chuột về vị trí bên phải Label "Địa chỉ liên hệ :" và vẽ nó
 với kích thước mong muốn. Hiệu chỉnh thuộc tính (Name)= 
 txtContact.
11. Lặp lại bước 10 ₫ể vẽ 2 TextBox còn lại với thuộc tính (Name) 
 tuần tự là txtPhoneNo, txtFaxNo.
12. Duyệt tìm phần tử GroupBox (trong nhóm Common Controls), 
 chọn nó, dời chuột về vị trí ngay dưới Label "Số Fax :" và vẽ nó
 với kích thước mong muốn. Hiệu chỉnh thuộc tính Text = "Danh 
 sách các ₫ơn ₫ặt hàng của khách hàng ₫ang ₫ược chọn :".
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 29
Xây dựng ứng dụng databinding bằng VC#
13. Duyệt tìm phần tử DataGridView (trong nhóm Data), chọn nó, dời 
 chuột vào trong GroupBox vừa vẽ và vẽ nó với kích thước mong 
 muốn. Hiệu chỉnh thuộc tính (Name)= grdOrders.
14. Lặp lại bước 12 và 13 ₫ể vẽ GroupBox có thuộc tính Text = "Chi 
 tiết của ₫ơn ₫ặt hàng ₫ang ₫ược chọn :" và DataGridView bên 
 trong có thuộc tính (Name) = grdOrderDetails.
15. Tạo hàm xử lý sự kiện cho 2 button btnToi và btnLui rồi viết code 
 cho chúng như sau :
//hàm xử lý Click chuột trên button "Tới"
private void btnToi_Click(object sender, EventArgs e) {
 CurrencyManager cm = (CurrencyManager)this.BindingContext[ 
 dsView, "Customers"];
 //nếu không phải khách hàng cuối thì tiến tới 1 khách hàng
 if (cm.Position < cm.Count - 1) cm.Position++;
}
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 30
Xây dựng ứng dụng databinding bằng VC#
//hàm xử lý Click chuột trên button"Lùi"
private void btnLui_Click(object sender, EventArgs e) {
 //nếu không phải khách hàng ₫ầu tiên thì lùi 1 khách hàng
 if (this.BindingContext[dsView, "Customers"].Position > 0)
 this.BindingContext[dsView, "Customers"].Position--;
}
16. Thêm lệnh using sau vào ₫ầu file ₫ặc tả class Form :
using System.Data.OleDb;
17. Thêm các lệnh ₫ịnh nghĩa các thuộc tính dữ liệu cần dùng sau 
 ₫ây vào ở vị trí ₫ầu class ₫ặc tả Form :
 //₫ịnh nghĩa các thuộc tính dữ liệu cần dùng
 private String ConnectionString;
 private DataViewManager dsView;
 private DataSet ds;
 private OleDbConnection cn;
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 31
Xây dựng ứng dụng databinding bằng VC#
18. Hiệu chỉnh lại hàm constructor của Form ₫ể có nội dung như sau:
 public Form1() {
 InitializeComponent();
 //xây dựng chuỗi ₫ặc tả database cần truy xuất
 ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data 
 Source=c:\\NorthWind.mdb;";
 //tạo ₫ối tượng Connection ₫ến database
 cn = new OleDbConnection(ConnectionString);
 //tạo ₫ối tượng DataSet
 ds = new DataSet("CustOrders");
 //tạo ₫ối tượng DataApdater quản lý danh sách các khách hàng
 OleDbDataAdapter da1 = new OleDbDataAdapter
 ("SELECT * FROM Customers", cn);
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 32
Xây dựng ứng dụng databinding bằng VC#
 //ánh xạ Tablename "Table" tới bảng dữ liệu "Customers"
 da1.TableMappings.Add("Table","Customers");
 //chứa bảng Customers vào Dataset 
 da1.Fill(ds);
 //tạo ₫ối tượng DataApdater quản lý danh sách các ₫ơn ₫ặt hàng
 OleDbDataAdapter da2 = new OleDbDataAdapter
 ("SELECT * FROM Orders", cn);
 //ánh xạ Tablename "Table" tới bảng dữ liệu "Orders"
 da2.TableMappings.Add("Table","Orders");
 // chứa bảng Orders vào Dataset 
 da2.Fill(ds);
 //tạo ₫ối tượng DataApdater quản lý danh sách các mặt hàng
 OleDbDataAdapter da3 = new OleDbDataAdapter
 ("SELECT * FROM [Order Details]", cn);
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 33
Xây dựng ứng dụng databinding bằng VC#
 //ánh xạ Tablename "Table" tới bảng dữ liệu "Orders"
 da3.TableMappings.Add("Table","OrderDetails");
 // chứa bảng [Orders Details] vào Dataset 
 da3.Fill(ds);
 //thiết lập quan hệ "RelCustOrd" giữa bảng Customers và Orders
 System.Data.DataRelation relCustOrd;
 System.Data.DataColumn colMaster1;
 System.Data.DataColumn colDetail1;
 colMaster1 = ds.Tables["Customers"].Columns["CustomerID"];
 colDetail1 = ds.Tables["Orders"].Columns["CustomerID"];
 relCustOrd = new System.Data.DataRelation 
 ("RelCustOrd",colMaster1,colDetail1);
 //"add" quan hệ vừa tạo vào dataSet
 ds.Relations.Add(relCustOrd);
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 34
Xây dựng ứng dụng databinding bằng VC#
 //thiết lập quan hệ "relOrdDet" giữa bảng Orders & [Order Details]
 System.Data.DataRelation relOrdDet;
 System.Data.DataColumn colMaster2;
 System.Data.DataColumn colDetail2;
 colMaster2 = ds.Tables["Orders"].Columns["OrderID"];
 colDetail2 = ds.Tables["OrderDetails"].Columns["OrderID"];
 relOrdDet = new DataRelation("RelOrdDet",colMaster2,colDetail2);
 //"add" quan hệ vừa tạo vào dataSet
 ds.Relations.Add(relOrdDet);
 //Xác ₫ịnh DataViewManager của DataSet.
 dsView = ds.DefaultViewManager;
 //thiết lập Databinding giữa database với 2 DataGridView
 grdOrders.DataSource = dsView;
 grdOrders.DataMember = "Customers.RelCustOrd";
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 35
Xây dựng ứng dụng databinding bằng VC#
 grdOrderDetails.DataSource = dsView;
 grdOrderDetails.DataMember = "Customers.RelCustOrd.RelOrdDet";
 //thiết lập Databinding giữa database với ComboBox
 cbCust.DataSource = dsView;
 cbCust.DisplayMember = "Customers.CompanyName";
 cbCust.ValueMember = "Customers.CustomerID";
 //thiết lập Databinding giữa database với 3 Textbox
 txtContact.DataBindings.Add("Text",dsView,"Customers.ContactName");
 txtPhoneNo.DataBindings.Add("Text",dsView,"Customers.Phone");
 txtFaxNo.DataBindings.Add("Text",dsView,"Customers.Fax");
}
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 36
Xây dựng ứng dụng databinding bằng VC#
19. Chọn menu Debug.Start Debugging ₫ể dịch và chạy ứng dụng. 
 Lúc ₫ầu, form sẽ hiển thị thông tin về khách hàng ₫ầu tiên trong 
 bảng, khi bạn click vào button "Tới" hay "Lùi", thông tin khách 
 hàng tương ứng sẽ tự ₫ược hiển thị. Bạn cũng có thể chọn 1 
 khách hàng tùy ý trong ComboBox "Tên khách hàng :" ₫ể chương 
 trình tự hiển thị thông tin chi tiết về khách hàng ₫ó.
20. Tóm lại Databinding trong VC# giúp ta giảm nhẹ rất nhiều công 
 sức viết chương trình truy xuất database : chúng ta chỉ viết ₫oạn 
 code thiết lập databinding giữa các ₫ối tượng giao diện với dữ liệu 
 tương ứng trong database chứ chúng ta không cần viết ₫oạn 
 code cập nhật nội dung của các phần tử giao diện theo sự biến 
 ₫ộng của database, chúng ta cũng không cần viết code cập nhật 
 database theo nội dung mà người dùng thay ₫ổi trên các ₫ối 
 tượng giao diện.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 37
12.7 Kết chương 
‰ Chương này ₫ã giới thiệu cách thức dùng các ₫ối tượng trong thư 
 viện ADO .Net ₫ể truy xuất database dễ dàng, tin cậy. 
‰ Chương này cũng ₫ã giới thiệu cách thức dùng khả năng 
 databinding của các ₫ối tượng giao diện trong môi trường VS .Net 
 ₫ể xây dựng chương trình truy xuất database ₫ược dễ dàng, 
 nhanh chóng, tin cậy, và nhiều trường hợp không cần viết code 
 cho chương trình.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 12 : Truy xuất database trong chương trình VC#
 © 2010 Slide 38

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_12_truy_xuat_data.pdf