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# - Nguyễn Văn Hiệp

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 yennguyen 2820
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# - Nguyễn Văn Hiệp", để 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# - Nguyễn Văn Hiệp

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# - Nguyễn Văn Hiệp
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 1
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
Chương 12
Truy xuất database trong chương trình VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 2
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 3
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 4
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 5
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 6
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 7
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 8
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 9
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 10
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 11
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 12
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 13
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 14
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 15
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 16
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 17
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 18
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 19
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 Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 20
4. Duyệt tìm phần tử DataGridView (trong nhóm Data), chọn nó, dời 
chuột vào trong Form và vẽ nó với kích thước mong muốn (chiếm 
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".
12.5 Thí dụ về databinding mà không viết code
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 21
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.
12.5 Thí dụ về databinding mà không viết code
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 22
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.
12.5 Thí dụ về databinding mà không viết code
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 23
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 24
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 25
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 26
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 27
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 28
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 :"
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 29
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 :".
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 30
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++;
}
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 31
//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;
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 32
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);
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 33
//á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);
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 34
//á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);
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 35
//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";
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 36
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");
}
Xây dựng ứng dụng databinding bằng VC#
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 37
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
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 12 : Truy xuất database trong chương trình VC#
Slide 38
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.

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_12_truy_xuat_data.pdf