Mục lục. Phần 1: Lý thuyết, tóm tắt và ví dụ chuyên đề. Làm việc với đối tượng ADO.NET. Làm việc với đối tượng Datareader. Đối tượng Dataadapter và dataset. Đối tượng Datatable và dataview. Đối tượng Datarow, Datacolumn và Datarelation,... Phần 2: Bài giải
Trang 1PHẠM HỮU KHANG (Chú biên) Ì\
Trang 22] PHAM HỮU KHANG (Chủ biên)
HOANG DUC BAI
PHUGNG LAN (Hiéu dinh)
Trang 3GIGI THIEU s MJ?
GIGI THIEU
Visual Basic NET cung cấp déi tugng ADO.NET bao gém hai
thành phần chính là NET Data Provider và đối tượng DataSet, cho phép bạn kết nối với mọi loại cơ sở dữ liệu, xử lý và trình bày chúng bằng nhiều hình thức khác nhau
Bằng cách sử dụng các đối tượng của ADO.NET, bạn có thể xây dựng các lớp dữ liệu cho từng thực thể hoặc xây dựng lớp tương tác với cơ
sở dữ liệu dùng cho mọi Project trên nền NET
Ngoài ra, cuốn sách này còn cung cấp cho bạn những kiến thức liên
quan đến việc trình bày dữ liệu trên các điều khiến, kết hợp các điều
khiển, thao tác đữ liệu, nhằm tạo ra ứng dụng mang tính thực tiễn cao Các bước xây dựng và tương tác với Report được thiết kế bằng Crystal Report, trình bày chi tiết từ bước thiết kế cho đến cách truyền
các tham số vào Report
Cuốn sách bao gồm 8 chuyên để chính, xuyên suốt từ đối tượng
Connection, Command, DataReader, DataAdapter, DataSet, DataTable,
DataView, DataRow, DataColumn, DataRelation đến việc trình bày dữ
liệu trên các điều khiển và xây dựng các lớp dùng chung
Giáo trình cung cấp cho bạn một khối lượng ví dụ hữu ích, đa dạng, trên 300 bài tập tham khảo có lời giải rõ ràng liên quan đến nhiều vấn
dé thực tiễn
HƯỚNG DẪN SỬ DỤNG VÍ DỤ VÀ BÀI TẬP
CHUYÊN ĐỀ VISUAL BASIC.NET
Để sử dụng các ví dụ và bài tập đính kèm theo sách, trước tiên bạn
cần quan tâm đến dường dẫn của ổ đĩa có tổn tại trên máy của bạn hay
chưa nếu ví dụ hay bài tập tham chiếu đến ổ đĩa
Những bài tập liên quan đến tài nguyên hay dịch vụ của hệ điều hành chỉ thực thi nếu hệ điều hành trên máy bạn là Windows 2000, XP hay 2003
Ngoài ra, với những ví dụ hay bài tập có liên quan đến cơ sở dữ
liệu, bạn cần xem lại hay thay đổi mật khẩu trong chuỗi kết nối cho phù hợp (nếu là cơ sở dữ liệu SQL Server, đường dẫn tập tin cơ sở đữ liệu
Northwind.mdb nếu liên quaa đến cơ sở dữ liệu Access)
Trang 4Chú ý, mọi ví dụ và bài tập đính kèm theo sách được thiết kế
không giới hạn trong phần nội dung lý thuyết đang trình bày Chính vì
lẽ đó, một ví dụ liên quan đến các địch vụ hay máy in của hệ điều hành cũng được sử dụng mặc dù về mặt lý thuyết chúng chưa được trình bày
Bên cạnh những lớp cơ sở của NET EFramework, trong ứng dụng đính kèm còn sứ dụng lớp có tên clsSystem (đính kèm tập tin cls5ystem.dll) và
lớp myUserControl (đính kèm tập tin myUserControl.dll), bạn có thể tham
chiéu lai trong Project nếu ứng dụng phát sinh lỗi khi thực thị
MK.PUB
Trang 5Bạn đọc đối với tú sách MK.PUB trong thời gian qua
Khẩu hiệu của chúng tôi là:
* Lao động khoa học nghiêm túc
* Chất lượng và ngày càng chất lượng hơn
* Tất cả vì Bạn đọc
Rất nhiều Bạn đọc đã gửi mơi cho chúng tôi đóng góp nhiều ý kiến
quý báu cho tủ sách
Ban xuất bản MK.PUB xin được kính mời quý Bạn đọc tham gia cùng nâng cao chất lượng tủ sách của chúng ta
Trong quá trình đọc, xin các Bạn ghi chú lại các sai sót (dù nhỏ,
lớn) của cuốn sách hoặc các nhận xét của riêng Bạn Sau đó xin gửi về
địa chỉ:
E-mail: mk.book@minhkhat.com.oun - mk.pub@minhkhai.com.ovn Hoăc gửi về: Nhà sách Minh Khai
249 Nguyễn Thị Minh Khai, Q.1, Tp Hồ Chí Minh
Nếu Bạn ghi chú trực tiếp lên cuốn sách, rồi gửi cuốn sách đó cho chúng tôi thì chúng tôi sẽ xin hoàn lại cước phí bưu điện và gửi lại cho Bạn cuốn sách khác
Chúng tôi xìn gửi tặng một cuốn sách của tủ sách MK.PDB tùy chọn lựa của Bạn theo một danh mục thích hợp sẽ được gửi tới Bạn
Với mục đích ngày càng nâng cao chất lượng của tủ sách MK.PUB, chúng tôi rất mong nhận được sự hợp tác của quý Bạn đọc gần xa
"MK.PUB uà Bạn đọc cùng làm ?”
MK.PUB
Trang 6Chuyên đề 16: LÀM VIỆC VỚI ĐỐI TƯỢNG ADO.NET 15
1 Đối tượng ADO.NET trong Visual Basic.NRT ~- 15
2 Trình điều khiển cơ sở đữ liệu - 2 S21 SSS Sky 16
8 Đối tượng SQLConnection vn ng HH2 Hy HH 18 3.1 Khai báo không Qian CON v.v HH 21 HH Tnhh ket 18 3.2 Khai bdo déi tuong SqiConnection
3.3 Khởi tạo đối tượng SqÌConnecliori -.-.-.-ece- 19
3.4 Mở kết nối cơ sở dữ liệu - S22 2Q ng nào co 21 3.5 Kiém tra trạng thái của kết niối ào Son cành sseisrrees 21
3.6 Đóng bết nổi ào on SE]
3.7 Giải phóng Độ ThỚ Q Q cLLS SH SH ng gà ngà khen” 21
4 Khai báo và sử dụng OleDbConnectiơn . cs<<-<s-sc<essc-cc 28
5 Đối tượng SQLCommand 2-00 2Ạ 21c * HH rớy 28 5.1 Khai báo đối tượng SgÌCommand ààà co coi seăi 29 5.2 Khởi tạo đối tượng SqÌCommdnd co co cành HH nie 29 b1 8y 0 7.1000 he e a F8 nne R j1
6 Làm việc với đối tượng tham số -22cc2-xs-eeseee ®1
6.1 Parameters Collection nan ng e6 ố 6.2 Đối tượng SqÌPqrdm6l@F à- TT, hH nh key 46
Trang 7
BM MUC LUC
1 Wết luận ả cu 0n 2n ng crack 50
Chuyên đề 17: LÀM VIỆC VỚI ĐỐI TƯỢNG DATAREADER 51
1 Đối tượng SQLDATAREADER 222: 2111222215221 ke B1
8v an h6 h6hađ4.ố.ốố .ẻa ð1
¡2 /ya; 0.0.7 n0 se 54
2 Đối tượng SQLDataReader và điều khiển co ceeiằ 57
B KEG MAM ố “4 ăẼăẼ a4+4 62
Chuyên đề 18: ĐỐI TƯỢNG DATAADAPTER VÀ DATASET 63
1 Đối tượng SqlDataAdapter con Hà HH ty kkr nhe 63 1.1 Phương LÚC cuc TH An no TT vi ch 64
r *ÝJ 18 h6 < eee aaa 65
1.8 Điều khiển SqIDataAdpÏGT S LH cv vn nH kgệc 67
1.4, D6i tuong Sq Data Adapter c.cccccccccccccccceececsccccctetuntaseensettseastenes 70 p0 0 anh Ả 72
P8 (5 7 naaẢẦẢ1 a ẻẻẽ ằ 73 2.2 Phương (ÚC ch cece eee eee eee eee eee ne và 74
3 Cap nhat diy Li6u cece eee ng n2 TT và 80
4, Déi tuong DataSet VA KML ou ecccccceececcceesesceeeesseteeecceteescsseereaeeateys 85
LÊN 8.8/02, 0n nố Ả 8ã 4.2 Phương thúc ReddXmÏ a ST hkkekrevec 2 4.3 Phương thúc ÄCT© -L nh TT TT HA TY nh kg xxx kệ 88
5 KO Wand oo ccc cee cceeceeeceeeneseeenesstyvenseeesecesuuseseeeenessseesenseeentiesenieeeegs 96
Chuyên đề 19: ĐỐI TƯỢNG DATATABLE VÀ DATAVIEW 91
1 Đối tượng DataTable - - cc Tà cọ n TH S vn 9211 1kg KH kg vec 91
Trang 8MUC LUC 9 MP
I8 (na 7n 98
0y 08 annannốố.e 96
2 Di tuang DataView wos cccsceccesccnssecceesetecventesenreecsseseneeeeunesennesen 99
3 Cập nhật đữ liệu từ đối tượng datatable cà eeeees 101 4A (GA (II 108
Chuyên đề 20: ĐỐI TƯỢNG DATAROW, DATACOLUMN VA
DATARELATION uc ccccressessssscsscseccceccesseccsesersaessonsseses 109
1 Đối tượng DatalÑfOW QQLQQQ TH TH TH ng K2 K11 95kg ray 109 LiL, TRuGC tin 1n 6 MA cố 109
ID NÐ// 001.807)7 20 NHdõõốÃÝÃẼÉẼÀÝ 110
2 Đối tượng DataColumn Ốc S2 22ccsssce<eeeseeeeeeseexerexvevee L2
QD, THUGe bir é—liaiaaaiiiiiẢ 112 2.2 PRUONG tRUC crrrcccccecccccecee tiene eee eee ec eeesegeeesonnennnaea 114
ä Đối tượng DataRelation Q02 S 21221 nnH TH nh na 117
:Lïw,1.:.ann cu ) 077) 0n ằ Ả 118
W.‹39Ụaiiiẳiđẳắ 124
Chuyên đề 21: DIEU KHIEN DATAGRID VA DATABINDINGS 125
1 Điều khiển DataGrid — Ăn ssssrsssssrrsssssreesseeee L 25
2 Định dạng điều khiển TextBox vào DataGrid 130
3 Định dạng điều khiển CheckBox vào DataGrid 133
4 Dinh dạng điều khiển ComboBox vào DataGrid eo 140
5 Điều hướng dữ liệu - uc 2 H9 E19 11221 SE 2n 122 vn vn 144
m0: .(a.(l .ăỐăẽ ắố 149
Trang 9FT MỤC LỤC
Chuyên đề 22: LỚP DỮ LIỆU CHO TỪNG THỰC THỂ 151
1 Thảo luận giải pháp tương tác cơ sở đữ liệu Lỗ 1
2 Xây dựng lớp bao gồm các thuộc tính và phương thức của từng bảng
¡0ì 8n 6 (d4 157
3 Kêt luận Q2 — ĐH nà cm KTS vs ve ree 176
Chuyên đề 23: KHÁM PHÁ CRYSTAL REPORTT - 177
1 Thiết kế Report bằng Crystal Report che rercesrvee 177
2 Tương tác Report từ Visual Basic.NET cc cành 186 9.1 Khai báo dùng ChUH uc TS n2 KH KH nhá ng kg và 186 P.08.) 8s 0n an 35 188 2.3 Cung cấp thông tin đăng nhẬp «ceeccecceee-svi c v 9Ó
2.4 học dũ liệu từ điều khiển Crystal Report Vieuler 192
2.5 Điền dữ liệu véo Crystal Report từ đối tượng DataSel 194
2.6 Điền dữ liệu vao Crystal Report tu déi tuong DataTable 197
3 Xuất đữ liệu ra định đạng khác cv 2n ke 200
4 Kết luận L TQ SH 190k E222 5 11T ng kh kg keo, 204
PHẦN II: BÀI GIẢI CỦA BÀI TẬP - -.- s-csz©2222-sse5++ 205
Chuyên đề 16: LÀM VIỆC VỚI ĐỐI TƯỢNG ADO.NET 207
1, Đối tượng ADO.NET trong Visual Basie.NET 2Ö 7
2 Trình điều khiến cơ sở đữ ÌiệuU Q à 0n SH HT SH 21 ghe rà 207
3 Đối tượng SQLConnectlon Lt Q22 HH nn HH HT 012111 re 207
4 Khai báo và sử dụng OleDbonnection - St nncncssSevvvvc«c 215
5 Đối tượng SQLCommanid - 2c 211 1E TH n ST cán key 225
6 Làm việc với đối tượng tham SỐ ÁQQ Q2 Hài 254
Trang 10MUC LUC 1i [MÙ?
Chuyên đề 17: LÀM VIỆC VỚI ĐỐI TƯỢNG DATAREADER 261
1 Đối tượng SqlDataReader ác Scsesceceeeeseee.e- 8 1
2 Đối tượng SqlDataReader và điều khiển cccccccecceẰ2 289
Chuyên đề 18: ĐỐI TƯỢNG DATAADAPTER VÀ DATASET 281
1 Đối tượng SqlDataAdapt@r - tt c2 n2 H21 xre re 281
2 Đối tượng DataSŠetL Q- g HT ng HT n HT, 291
bN tì) 6): 2.i0)uậầaiiiiiaid 305
4 Đối tượng DataSet và XML, Làn n SH nhe 313
Chuyên đề 19: ĐỐI TƯỢNG DATATABLE VÀ DATAVIEW 317
1 Déi tugng DataTable e.e À\X
2 Đối tượng DataVI@W ng TT 2 HH HT TT HH2 334
3 Cập nhật đữ liệu từ đối tượng DataTable - ác sec se: 349
Chuyér dé 20: DOI TUGNG DATAROW, DATACOLUMN VA
DATARELATION - 55- 5c 2222©-ctskzecxeecrkekreeee 357
II 2.78.) 4).1 09 addaiiaiẢẢẢẢ 357 P2101 1.09717.1902)10.2, 00008086 e
3 Đối tượng DataRelation
Chuyên đề 21: ĐIỀU KHIỂN DATAGRID VÀ DATABINDINGS 389
I8 i09 c nh 389
2 Dinh dang điều khiển TextBox vào DataGrid -ằ.c cà 396
3 Đình dang điều khiển CheckBox vào DataGrid ccằà 402
4 Dinh dang diéu khiển ComboBox vào DataGrid › 409
B Diéu hung div Gu oo ắe
Trang 11MJ” 32 MUC LUC
Chuyên dé 22: LOP DU LIEU CHO TUNG THỰC THỂ 425
1 Thảo luận giải pháp tương tác cơ sở đữ liệu 425
2 Xây dựng lớp bao gồm các thuộc tính và phương thức của từng bảng
10110 — .Ả a 425
Chuyên đề 28: KHÁM PHÁ CRYSTAL REPORT 4ã3
1 Thiết kế Report bằng Crystal Report cv cccSccceeceeeo 453
2 Tuong tac Report tif Visual Basic NET 00.0.ccccecccccccucccceeeeresuteeeeeeenassees 453
3 Xuất dữ liệu ra định dang KhAC cceseccccesecsttcceseeseteessseesseceseees 461
Trang 12Phần I: Lý thuyết tóm tắt & ví dụ chuyên dé 13 M°
Trang 13Khi làm uiệc uới NET, để kết nối uới các cơ sở dỡ liệu
nhu: SQL Server, Access, Excel, Oracle, MySQL uà những cơ sở
dữ liệu bhác, bạn có thể sử dụng đối tượng ADO.NET
Bằng cách sử dụng các trình điêu khiển uò đối tượng ADO NET, bạn có thể tương tác với loại dữ liệu như SQ@L
Server, Access hay Excel
Trong chuyén dé nay, chung ta sé tim hiéu cach khai bdo
sử dụng các trình điêu khiển cơ sở dữ liệu bằng ngôn ngủ lập
trink Visual Basic.NET
Các uấn đê chính sẽ được đề cập:
Giới thigu ADO.NET
Trình điệu khiển cơ sở dữ liệu
Đối tượng OleDbConnection
«
v
«x Đối tượng SqiConnection
v
_ Đối tượng SqạlCommand
v Làm uiệc uớt déi tugng SqlParameter
trình điểu khiển cơ sở đữ liệu MET (NET Data Prouider) thuộc lớp kết
néi
.NET Data Provider la tap các đối tượng thuộc thành phần
ADO.NET, bao gồm đối tượng Connection (kết nổi cơ sở đữ liệu), đối
Trang 14®
JA 16 Phan I: Ly thuyét tóm tắt & ví dụ chuyên dé tượng Comznand (thực thi phát biểu S@QL), Da‡aReader (bộ đọc dữ liệu
trực tiếp) và Da(aAdapter (bộ điều phối đữ liệu)
Với cơ chế ba tầng trong ứng dụng NET (tang-dir liéu Data tier,
tang Business tier vA tang hién thuc Presentation tier) tách biệt, cho
phép người dùng truy cập dữ liệu từ tầng hiện thực thông qua tầng
Business tter
Trong ADO.NET khái niệm con trổ (Cursor) không tồn tại, thay
vào đó đối tượng DœtaSet được xem như một con trỏ tĩnh (static) va doi
tượng DataReader 1a con tré chi doc (Readonly Curosor)
ADO.NET cung cấp các trình điều khiển tương ứng với các loại cơ
sé du liéu Chang han, SQL Server NET Data Provider ding cho cơ sở
di liéu SQL Server 7.0/2000
OleDb NET Data Provider la trình điều khiến dùng cho các loại cơ
sở dữ liệu tương tác nhúng như: Cơ sở dữ liệu Access, Excel hay co sé du
ligu SQL Server 6.5 Tuy nhién, ban ciing có thể sử dụng trình điều khiển này cho cơ sở dữ liệu SQL Server 7.0/2000
Odbc NET' Data Prouider là trình điều khiển dùng cho các loại cơ
sở dữ liệu tương tác thông qua ODBC của hệ điều hành Windous
Trong trường hợp làm việc với cơ sở dữ liéu Oracle hay MySQL,
bạn cần tải trình điều khiến Oracle NET Data Provider hay MySQL
.NET Dota Prouider, sau đó cài đặt chúng vào hệ thống
Trong chuyên để này, chúng ta chỉ tập trung tìm hiểu cách làm
việc với 3 loai co sé dif liéu chinh cha Microsoft la SQL Server, Access va Excel
2 TRINH DIEU KHIEN CO S6 DU LIEU
Khi lấy dữ liệu từ nguồn đữ liệu (dữ liệu quan hệ, tập tin văn bản, théng tin trong email, .), ban can quản lý và sử dụng trình điêu khiển
(Provider)
Do nội dung cuốn sách chỉ tập trung tìm hiểu 3 loại cơ sở dỡ liệu
chinh lA SQL Server, Access va Excel Chinh vi vay, chung ta si dung hai trình diéu khién chinh 14 SQL Server NET Data Provider va OleDb -NET Data Provider
Trang 15Chuyên để 16: Làm việc với đôi tượng ADO.NET 17 M
Prouider được xem như một, cầu nối giữa ứng dụng với cơ sở đữ liệu,
chúng dùng để kết nối với dữ liệu nguồn, thực thi phát, biểu SQL và nhận
đữ liệu trả về Những dữ liệu trả về có thể được xử lý trực tiếp hay lưu
trữ trên đối tượng Dø#zSet (thuộc lớp không kết nối, chúng ta sẽ tìm hiểu chỉ tiết trong chuyên đề kế tiếp)
Nếu dữ liệu lưu trữ trên đối tượng DafaSe¿, chúng có thể trình bày
cho người sử dụng với nhiều hình thức khác nhau, như kết hợp đữ liệu từ nhiều bảng hay dữ liệu truy xuất từ nhiều loại cơ sở dữ liệu khác nhau
Nhu trinh bay 6 hinh trén, VET Provider cho phép bạn cập nhật
sự thay đổi của dữ liệu trén déi tugng DataSet vào đữ liệu nguồn Khi lập
trình ứng dụng Visual Basic.NET, khai báo và sử đụng hai trình điều
khiển trên về cơ bản là tương tự như nhau dù hai đối tượng này thuộc
khéng gian tén System,Data.SqlClient va System.Data.OleDb
Mặc dù, hai trình điểu khiến trên thuộc hai không gian tên khác nhau nhưng chúng cung cấp các chức năng tương tự nhau khi làm việc
với cơ sở đữ liệu
Chúng ta sẽ tham khảo sơ lược sự tương ứng các đối tượng thuộc
hai trinh diéu khién SQL Server.NET Data Provider va OLE DB.NET Data Provider nhu sau:
tu trong NET Provider la: Connection, Command, DataReader,
DataAdapter nhu sau:
Trang 16Phan I: Lý thuyết tóm tắt & ví dụ chuyên để
Đối tượng Diễn giải
Connection Thiết lập kết nối cơ sở dữ liệu với nguồn
dữ liệu
Command Thực hiện lên trên nguồn dữ liệu, đặt vào
các tham số và thu nhận các chuyển tác từ
3 ĐỐI TƯỢNG SQLCONNECTION
Khi làm việc với cơ sở dữ liệu SQJ, Seruer 7.0/2000, bạn sử dụng
không gian tên System.Data.SqiClient Ngugc lại, trường hợp bạn làm việc với cơ sở dữ liệu Áceess hay Excel thì khai báo và sử dụng không gian tén System.Data.OleDb,
Để kết nối cơ sở dữ liệu SQL Server, ban sử dụng đối tượng
SgiConnection Sau đây, chúng ta tham khảo từng công đoạn khai báo và
thực biện của chúng
3.1 Khai báo không gian tên
Để khai báo và sử dụng đối tượng SgÌConnecHon, trước tiên bạn
phải khai báo trên phần đầu mỗi Class phat biéu Imports ding dé nap
không gian tên System.Data.SqlClient nhu sau:
Imports System Data.SqlClient
Trang 17Chuyên đề 16: Làm việc với đối tượng ADO.NET 19 (Al
3.2 Khai báo đối tượng SqlConnection
Rhi đã khai báo không gian tên, bằng cách sử dụng cú pháp như
sau, bạn khai báo để sử dụng đối tượng SaiConnection:
Dim myConn As Sq]lConnection
8.38 Khởi tạo đối tượng SqlConnection
Sau khi khai báo biến đối tượng SgiConnection, bạn có thể khởi
tạo đối tượng này với chuỗi kết nối (bao gồm các thông tin IP hay tén
Seruer, Dœtabaœse là tên cơ sở đữ liệu)
myConn = New SqlConnection (“chuôi kết nối”)
Hoặc sử dụng thuộc tinh ConnectionString dé gan chudi két nối cơ
sở dữ liệu:
myConn = New SqlConnection()
myConn.ConnectionString- “Chuối kết nối”
Lưu ý, bạn cũng có thể vừa khai báo vừa khởi tạo đối tượng SqiConnection với biến gsCon (chuỗi kết nối cơ sở dữ liệu) trên cùng một câu lệnh như sau:
Dim gsCon As String
gsCon-"Server-=.;Database=Nort hwind"
gsCon +=";User 1D=sa; Password=sa;"
Dim myConn As SqlConnection = _
New SqlConnection(gsCon) Hoặc:
Dim gsCon As String
gsCon="Server=.;Database=Northwind"
gsCon +=";User I1D=sa; Password=sa;"
DimmyConn As New SqiConnection(gsCon)
Tùy thuộc vào cách sử dụng đặt quyển truy cập co sé dif liéu, vdi
tài khoản của cơ sở dữ liệu hay sử dụng tài khoản của hệ điều hành, nội
dung của chuỗi kết nối cơ sở dữ liệu SQL, Seroer sẽ khác nhau
Trang 18®
M so Phần I: Lý thuyết tóm tắt & ví dụ chuyên đẻ
3.3.1 Sd dung SQL Server Authentication
Néu su dung SQL Server Authentication (dang nhập bằng dat
quyền cơ sở đữ liệu SQL Seroer), chuỗi kết nối bao gồm các thuộc tinh
nhu: Server, Database, User ID va Password
Ví dụ, khai báo chuỗi kết nối cơ sở dữ liệu SQL Seruer với các
thuộc tính như sau:
Dim gsCon As String
gsCon="Server= ; Database=Northwind"
gsCon +=";User ID=sa;Password=sa; "
Tuy nhiên, bạn cũng có thể sử dụng UID và PWD thay vì sử dụng
tu khéa User ID vA Password nhu sau:
Dim qsCon As String
gsCon="Server=.;Database=Northwind"
gsCon +=";UID=sSa; PWD=sa;"
Nếu mật khẩu là rỗng, bạn cũng khai báo thuộc tính PWD trong
Để tham khảo chi tiết về điều này, bạn có thể tìm đọc cuốn sách
“Quản trị SQL Seruer 2000” do nhà sách Minh Khai phát hành
3.3.2 Sứ dụng Windotuus Authenticeatton
Néu su dung Windows Authentication, chuỗi kết nối bao gồm các
thuộc tính nhu: Server, Database Khi d6, thuộc tinh User ID và
Password chinh la Username vA Password ma ngvdi si dung dang đăng
nhập hệ điều hành
Ví dụ, bạn khai báo chuỗi kết nối cơ sở đữ liệu SQL Seruer với các
thuộc tính như sau:
Dim gsCon As String
gsCon="Server=-.;Database=Northwind;"
Trang 19` ` “ ®
Chuyên đề 16: Làm việc với đối tượng ADO.NET 21 [M
gsCon +="Integrated Security=SSPI;"
Tuy nhién, khi sy dung Windows Authentication, tic trong SQL
Server da tén tai nhing User cia hé didu hanh, điều này có nghĩa là bạn
đã đăng ký người sử dụng thuộc hệ điều hành trong phần login cia SQL Seruer
8.4 Mở kết nối cơ sở dữ liệu
Sau khi khai báo và khởi tạo đối tượng SgÌConnection, bạn có thể
mở kết nối cơ sở dữ liệu SQL Seruzr bằng cách sử dụng phương thức
Open() với cú pháp như sau:
myConn Open (}
8.5 Kiểm tra trạng thái của kết nối
Bằng cách sử dụng thuộc tính State cha đối tượng ConnecHon để so sánh với ConneectionStdte của không gian tên System.Dưfa, bạn có thể
kiểm tra xem kết nối đang ở trạng thái đóng hay không
Tf myCenn.State <> ConnectionState.Closed Then myConn.Close()
myConn Dispose ()
End if
3.6 Đóng kết nối
Sau khi thực thi một số công việc trên cơ sở dữ liệu, như thực thi
phát biểu SQL hay khai báo và sử dụng các đối tượng khác, nếu không sử dụng đối tượng SqiConnection, bạn khai báo đóng kết nối này bằng cách
khai báo phương thức C?ose() như sau:
myConn.Close()
8.7 Giải phóng bộ nhớ
Nếu sau khi đóng đối tượng Sq!Connection, bạn còn tiếp tục mở với
cơ sở dữ liệu khác thì không cần giải phóng bộ nhớ do biến này chiếm
g1ữ
Trong trường hợp chương trình không tiếp tục sử dụng đối tượng,
bạn nên giải phóng bộ nhớ biến này bằng cách sử dụng phương thức
Dispose như khai báo sau:
Trang 20
Phan I: Ly thuyét tom tat & vi du chuyén dé
myConn Dispose ()
Luu ý, kể từ khi mở kết nối cơ sở dữ liệu đến khi xử lý tập lệnh
(sau khi md két néi), ban cdn cai dat phat biéu Try Catch Finally End Try để kiểm soát lỗi phát sinh nếu có
Chang han, thêm Form vao Project va dat tén frmSqlConnect,
thiết kế các điều khiển trông giống như hình 16-1
Ví dụ 16-1: Kết nối cơ sở dữ liệu SQL Server
Private Sub Buttonl_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim gsCon As String= TextBox1.Text
Dim myConn As New SqlConnection (gsCon)
myConn.C1osge ()
myConn Dispose ()
End Try
End Sub
Lam ý, bạn cần khai báo không gian tén trên đầu Class nhu sau:
Tmports System Data Sql1Cllient
Trang 21` , ®
Chuyên đề 16: Làm việc với đối tượng ADO.NET 23
Dé tim hiéu thém vé sd dung Sq/Connection, bạn có thể thực hiện
các ví dụ sau:
1 Thiét ké Form, cho phép ngudi st dung nhAp UserName va
Passuord, sau đó khai báo đoạn chương trình để kết nối cơ sở dữ
liệu Nến kết nối không thành công thì phun lỗi ra màn hình bằng lệnh MsgBox
2 Viết ứng dụng Console, sử dụng chuỗi kết nối cơ sở dữ liệu ứng với Windows Authentication, nếu kết nối thành công bạn liệt kê danh sách các bảng có trong cơ sở dữ liệu dé ra man hinh Command Prompt
4 KHAI BÁO VÀ SỬ DỤNG OLEDBCONNECTION
Tương tự như khai báo biến đối tượng SgiConnecton dùng cho cơ
sở dữ liệu SQL, Seruer vừa trình bày ở trên, khi sử dụng cơ sở dữ liệu MS
Access hay Excel, bạn có thể dùng đối tượng O!eDbConnection
4.1 Khai báo không gian tên
Để khai báo và sử dụng đối tượng O!eDbConnecHon, trước tiên bạn phải thêm phát biểu như sau vào phần đầu của C/øss:
Tmoorts System Data.OleDb
4.2 Khai báo biến đối tượng OleDbConnection
Để khai báo đối tượng OieDbConnecHon kết nối cơ sở đữ liệu Access hay Excel, ban su dụng đối tượng OleDbConnection Chẳng hạn,
bạn khai báo để sử dụng đối tượng này với cú pháp như sau:
Dim myConn As OleDbConnection
4.3 Khởi tạo biến đối tượng OleDbConnection
Sau khi khai báo biến đối tượng O/eDbConnection, bạn có thể khởi tạo biến đối tượng này với chuỗi kết nối, bao gồm tên và đường dẫn tập
tin co sở đữ liệu, trình điều khiển cơ sở dữ liệu Accase như sau:
myConn = New OleDbConnection(“chuổi kết nếi”)
4.4 Chuỗi kết nối cơ sở đữ liệu Access
Nếu bạn kết nối cơ sở dữ liệu Access, chuỗi kết nối khai báo tương
tu nhu sau:
Trang 22Ma 24 Phần I; Ly thuyét tóm tắt & ví dụ chuyên đề
Dim gsCon As String
gsCon="Provider=Microsoft.Jet.OLEDB.4.0;"
gsCon +="Data Source=Northwind.mdb"
4.5 Chuéi kết nối dữ liệu Excel
Trong trường hợp kết nối dữ liệu Excel, chuỗi kết nối được khai báo tương tự như sau:
Dim gsCon As String
gsCon="Provider=Microsoft.Jet.OLEDB.4.0;"
gsCon +="Data Source=D:\Bookl.x1ls;Extended "
gsCon +="Properties=""Excel 8.0;HDR=YES;"""
Lưu ý, nếu cơ sở dữ liệu phiên bản 10.0, ban có thể khai báo chuỗi
Ngoài ra, trong truéng hap khai bdo déi tuong Sg/Connection, ban
có thể vừa khai báo và khởi tạo biến déi tugng OleDbConnection trén
cùng một, câu lệnh:
Dim gsCon As String
gsCon="Provider=Microsoft.Jet.OLEDB.4.0;"
gsCon +="Data Source=mydatabase.mdb"
Dim myConn As SqiConnection = _
New SqlConnection(gsCon)
4.6 Mở kết nối cơ sở dữ liệu
Sau khi khai báo và khởi tạo đối tượng OleDbConnection, bạn có thể mở kết nối cơ sở dữ liệu Excel hoặc Access bằng phương thức Open() với cú pháp như sau:
myConn.Open()
4.7 Đóng kết nối
Sau khi thực hiển một số công việc, ví dụ như thực thi phát biểu
SQL hay khai báo và sử dụng các đối tượng nào đó, nếu chương trình
Trang 23
Chuyên để 16: Làm việc với đôi tượng ADO.NET
không có nhu cầu sử dụng đổi tượng ConneccHon, bạn phải khai báo đồng
kết nối này bằng phường thức CloseÓ như sau:
myConn.Close()
4.8 Giải phóng bộ nhớ
Tương tự như trường hợp làm việc với cữ sở dữ liệu S@L Seruer,
khi dóng đổi tượng Connection cla cd sé dif liéu Access ma ban liệp tục
mỡ với cơ sở dử liệu khác thì không cần giải phóng biển đối tương này Tuy nhiên, nếu không tiếp tục sứ dụng đối tương Connechon bạn nên giải phòng bộ nhớ bảng cách sử dụng phuong thie Dispose nhu khai
báo sau:
ryConn.ispbose (}
Tương tự như trường hợp SgÌCannection bạn cần cài đặt phát biểu
Try Catch Finally End Try, dé kiém soat lỗi phát sinh khi mỗ cơ
sở dữ liệu Áceess
Vị dụ, thếm Form và đặt tên #mOleDbConnect vào Project, roi
thiết kế các điều khiển trên Form như hình 16-3
lrm0leDhEonnection
Hình 16-3; Kết nối cơ sở dit liéu Access
Trong biến cố Click cia nut Rutfon1, bạn khai báo kết nổi cơ sở dữ
Private Sub HurtEonTl_C11ck(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles Buttonl.click
Dim gsCon As String= Text Box] Text
Trang 24eo
M 26 Phan I: Ly thuyét tom tat & vi du chuyén dé
Dim myConn As New OleDeConnection(qsCon}
Chu y, ban can khai báo không gian tên System.Data OleDb trên
phản đầu cia Class nhu sau:
Tmports System Data.OleDb
Tiép tuc tugng tac vdi tap tin Excel, ban thém Form vaa Project
dat tén la frmExeceConnection và thiết kế các điều khiến như hình 16-3
L]ElfrmnEwcelConnection
ì -nđby: *48errd lật
Connecting ting
Hinh 16-3: Doc da liéu ti Excel
Bang cach khai bdo trong bién c6 Click cla mit Button? nhu ví du 16-3, bạn có thể kết nối tap tin Excel tay ý
Privare Sub ButLon1_C€1ick(ByVal sender As _
System.Object, ByVal e As System FRventArgs) _
Handles Button1.Click
* Khai báa chuỗi kết nối tập tin ExeeL
Dim qsCon As String
on - "Provider=Microsoft.Jet.OLEDB.4.0;"
Con += "Data Source=" + TextBoxl.Text
Con += ";Extended Properties—
qsCon += "Excel 8.0;HDR=YES; "
Trang 25
Chuyên đề 16: Làm việc với đối tượng ADO.NET 27 [M\
Dim myConn As New OleDbConnect ion(gsCon})
App.config, tap tin bao gém cdc thude tinh nhu: server, database, data
source, mỗi khi có nhu cầu tương tác với cơ sở đữ liệu, chuỗi kết nồi được kết hợp từ việc đọc các thuộc tính này
Ví dụ, bạn có thể khai báo chuỗi kết nối trong tap tin App.config
bing dinh dang XML nhu vi dụ 16-4
i du 16-4: Tap tin App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="server" value="."/>
<add key="database" value="northwind"/>
<add key=“access"
value="Provider=Microsoft.Jet.OLEDB.4.0;" Data Source= "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb" />
</appSettings>
</configuration>
Sau dé, dé doc duce c4c khéa khai bdo trong tap tin App.config,
bạn sử dụng không gian tên System.Configuration
Imports x= _
System.Configuration.ConfigurationSettings
Tiếp tục khai báo để lấy giá trị từ các khóa vào hai biến toàn cục
trong phương thức ge(DBTnƒo như sau:
Sub getDBInfo (}
Trang 26® `
Ml 28 Phan I: Lý thuyết tóm tắt & ví dụ chuyên dé
gsServer = x.AppSettings ("server")
gsDatabase = x.AppSettings ("database")
End Sub
Lưu ý, bạn có thể lưu thông tín chuỗi kết nối cơ sở dữ liệu trong
Windows Registry hodc tAp tin dinh dang Text
Để tìm hiểu thêm vé su dung OleDbConnection, ban cé thé thuc
hién cdc vi du sau:
1 Thiết kế Form, cho phép người sử dụng nhập sername và Passuord,
sau đó khai báo đoạn chương trình để kết nối cơ sở đữ liệu và kiếm tra trong bảng t6lUsers cha eo sd dif liéu Access tuy chon Néu két nối không thành công thì phun lỗi ra màn hình bang lénh MsgBox
2 Viết ứng dụng Cønsoie, sử dụng chuỗi kết nối liệu Exce!, nếu kết nối
thành công, bạn liệt kê danh sách dữ liệu trong bang tinh (Sheet) ra man hinh Command Prompt
3 Tương tự như trên, bạn khai báo một Cløss và dat tén elsExcel, bằng
cách khai báo và khởi tạo đối tượng O!eDbConneciion trong Constructor của Class với chuỗi kết nối xem như tham số truyền vào
Construetor Sau đó, khai báo ứng dụng để sử dụng c†sExeeÏ này bằng cách truyền hoặc gán chuỗi kết nối vào thuộc tính của đối tượng clsExcel
5 ĐỐI TƯỢNG SQLCOMMAND
Sau khi đã làm quen cách kết nối co sd di liéu SQL Server bang
đối tượng Sq!Connection hay cơ sở dữ liệu Access và Excel bằng đối tượng OleDbConnection, ban dễ nhận thấy tập lệnh đã khai báo tương tự nhau
Khi làm việc với đối tượng Commanởd, chúng ta chọn đối tượng SqlConnection va co sd du liéu SQL Server dé tim hiéu cách sử dụng với
chúng
Nếu muốn thực thì phát biểu SQL dạng hanh déng (Delete, Insert, Update, Create, Drop, Alter, cdc tha tuc (Stored Procedure), ho&c phat biểu Select, bạn có thể sử dụng các phương thức và thuộc tính của đối
tượng Sqạ/Command.
Trang 27@
Chuyên đề 16: Làm việc với đối tượng ADO.NET 29
5.1 Khai báo đối tượng SqlCommand
Để khai báo và sử dụng đối tượng SgiCommand, bạn thao tác từng
bước tương tự như khai báo và khởi tạo đối tượng Sq!Connection
Chẳng hạn, bạn sử dụng cú pháp để khai báo đối tượng
SqlCommand như sau:
Dim myCom As SqlCommand
Nếu làm việc với cơ sở dữ liệu Access, nghia la trước đĩ bạn khai báo và khởi tạo đối tượng OleDbConnection thì dùng cú pháp sau:
Dim myCom Aø OleDbCommand
ð.2 Khởi tạo đối tượng SqlCommand
Sau khi khai báo đối tượng SqlCommand, để khởi tạo và sử dụng
đối tượng Sq)Commnand, bạn cĩ thể dùng cú pháp sau:
myCom= New SqiCommand{strSOl,myConn)
Ngồi ra, bạn cũng cĩ thể khởi tạo đối tượng SqÌCommand khơng
cĩ tham số, nhưng sau đĩ sử dụng hai thuộc tính CommondTexi và
Connection để khai báo như sau:
myCom= New SqlCommand ( }
myCom.CommandText=strSoQOL
myCom.Connection =myConn
Ví dụ, trong trường hợp bạn kết nối cơ sở dữ liệu SQL Seruer cĩ tén Northwind, sau 46 lay gid tri của cột và hàng thứ nhất trong tập trả
về, bạn khai báo như sau:
“ Khai báo chuỗi kết nổi cơ sở dữ liệu SQL Server
Dim gsCon As String
qsCon-"database=Northwind; UID=sa; PWD=sa; "
gsCon +="server=."
“ Khưi báo uà khửi tạo đốt tuong SqlConnection
Dim myConn As SqlConnection()
myConn= New SqiConnect ion(gsCon)
‘ Khai bdo chuéi SQL
Dim strSQL As String
strSQL="Select CustomerID from Customers"
Trang 28IM]
—~
®
mm 30 Phần I: Lý thuyết tóm tắt & ví dụ chuyên để
“ Khai báo uò khởi tạo đối tuong SqlCommand
Dim myCom As SqlCommand (}
myCom =New SqlCommand (strSQL, myConn)
strSQL= myCom.ExecuteScalar()
Chi y, néu ban st dung déi tugng OleDbConnection dé tam việc với
cơ sở dữ liệu Áecøss thi khai bao vA sit dung d6i tugng OleDbCommand nhu sau:
‘Khai bdo chuéi hết nối cơ sở dữ liệu Access
DIm gqsCon As Strlng
qs5Con=z="Provider=MICrOsoft.Jet.OLEDB.4.0; "
gsCon +="Data Source=Northwind.mdb*
‘Khai bdo va khdi tao déi tugng OleDbConnection
Dim myConn As OleDbConnection(}
myConn= New OleDbConnection (gsCon)
' Khi báo chuỗi SQU
Dim strSQL as String
strSQL-"Select CustomerID from Customers"
° Khai báo 0à khởi tạo đối tượng OleDbCommand
Dim myCom As OleDbCommand ( )
myCom =New OleDbCommand (strSOL,myConn)
sErSQL- myCom.ExecuteScalar ( )
5.3 Thuộc tính
Đối tượng SqlCommand cùng cấp các thuộc tính như:
CommandText, CommandType, Connection, CommandTimeout va Transaction
CommandText: Chuéi SQL hay tên đối tượng
CommandType Loại đối tượng cung cấp trong thuộc tính CommandText Chang han, bạn khai báo thủ tục nội tai cia SQL
Seruer cho thuộc tính CommmandText thì giá trị khai báo cho thuộc tinh CommandT ype la StoredProcedure
Connection: Đối tượng Connection tương ứng Chẳng hạn, khi bạn sử
dung SqlCommand thi thuéc tinh này có thé gán là đối tượng
SqiConnection
CommandTimeout: Thdi gian chd tinh bang gidy trước khi kết thúc
thuc thi
Trang 29® Chuyên đề 16: Làm việc với đối tượng ADO.NET 31
se Transgcfion: Cho phép bạn khai báo chuyển tác với ba thuộc tính là Save, Commit va RollBack
5.4 Phương thức
Đối tượng SqgJCommand cung cấp 3 phương thức chính để thực thị
phat biéu SQL la ExecuteNonQuery, ExecuteScalar va ExecuteReader 5.4.1 Phuong thiic ExecuteNonQuery
Phuong thuc ExecuteNonQuery tra vé gid tri số nguyên, tương ứng
vdi s6 mAu tin dA thuc thi, duoc sit dung cho cdc phat biéu SQL nhu cap
nhật dữ liệu, xóa, thêm mới mẩu tin hay các phát biéu dang hanh déng
và thủ tục nội tai trong SQL Server
Chẳng hạn, bạn khai báo và sử dụng phương thức ExecuteNonQuery
cua déi tugng Command trong phương thức doS@L thuộc lớp có tên
clsDatabase nhu vi du 16-5
i du 16-5: Phuong thie thue thi phat biéu SQL
Function doSQL (ByVal strSQL As String, ByRef EffectedRecord As Integer) As String
Dim strError As String = “"
‘Khai bdo uà khởi tạo đối tượng SqạÌConnection
Dim myConn As New SqlConnection(gsCon)
‘Khai bdo va khởi tạo đối tượng SạlCommand
Dim myCom As New SqiCommand (strSQL, myConn)
` Sử dụng cấu trúc quản !ý lỗi
Try
' Mở hết nối cơ sở dữ liệu
myComn Open ()
' Thực th\ phát biểu SQL dạng hành động, trả uề số mấu
‘tin da@ thuc thi
EffectedRecord =myCom.ExecuteNonqguery ()
“ Đóng kết nối cơ sở d8 liệu
myConn.Close()
Catch myException As Exception
“ Nếu lôi phút sinh trả vé chudi loi
strError=myException.ToString()
Finally
' Sau bhi kết thúc xử lỷ lỗi phát sinh, ban nén kiém tra
Trang 30
Phan I: Lý thuyết tóm tắt & vi du chuyên dé
' hết nối cơ sở đữ liệu còn mở hay không, nếu còn mở thì
“ bạn khai báo đóng kết nối
Tf (myConn.State = ConnecLionStEaEe.Open) Then
myConn.Close() End Tf
End Try
End Function
Đối với trường hợp làm việc với cơ sở dữ liệu Áccess có tên
Northuind, bạn có thể sử dụng phương thức ExecufteNonQuery của đối tượng O/eDbConnection để thực thi phat biéu SQL như ví dụ 16-6
í dụ 16-6: Phương thức thực thi phát biểu SQL ứng với Access
Eunctlon đoSQL(ByVal strSQ1I, As SLring, ByRef
EffectedRecord As Integer) As String
Dim strBrror As String = ""
‘ Khai bdo va khdi tạo đối tượng OleDbConnection
Dim myConn As New OleDbConnection(gsCon)
‘Khai bdo uà khởi tạo đối tượng SạÌCommand
Dim myCom As New OleDbCommand (strSQL, myConn)
‘Si dung cau tric quan lý lỗi
Catch myException As Exception
‘ Néu lãi phát sinh trả 0ê chuỗi lỗi
sErError=myException.ToString () Finally
“ Sau khi kết thúc xử lý lỗi phái sinh, bạn nên biểm tra
“ kết nối cơ sở đữ liệu côn mở hay không, nếu còn mở thì
“ bạn khơi báo đóng kết nổi
If (myConn.State = ConnectionState.Open)
Then myConn.Close() End If
Trang 31
Chuyên đề 16: Làm việc với đối tượng ADO.NET
End Try
End Function
Trong ví dụ trên, giá trị của biến øsCon được lấy từ tập tín
App.Config hoặc bạn có thể lấy từ tập tin dang Text véi dinh dạng như sau:
gsCon ="Provider=Microsoft.Jet.OLEDB.4.0;"
gsCon +="Data Source=C: \Program
Files\Microsoft"
gsCon +=" Office\Office\Samples\Northwind.mdb" Hay đối với cơ sở dữ liệu SQL Seruer thì chuỗi kết nối cơ sở dữ liệu
có hình đạng như sau:
gsCon="server=.;database=Northwind;"
gsCon +="uiđ=sa; pwd=sa "
Lưu ý, trong lớp cÌsDafabase, bạn khai báo để nhận chuỗi kết nối
trong Constructor hay bằng cách định nghĩa thuộc tính:
Private gsCon As String
© Khai bao Constructor
Sub New (ByVal strCon As String)
‘Khai bao thuéc tinh
Property Connection() As String
Để tham khảo thêm cách làm này, bạn thêm Form vào Project với tên #mExecuteNonQuery, thêm điều khiển TextBox để nhập phát biểu
Trang 32
Phần I: Lý thuyết tóm tắt & ví dụ chuyên dé
tao bang dif liés (Create Table) và điều khiển TextBox thu hai dé nhan
số mân tin thực thi từ phát biểu Insert
l ĐEN Nền
Create table TbUseis{UsenD int idenliy(1 1)
UserName varchar[20), FullN ame
Sau đó bạn khai báo trong biến cố Click của nút Button] dé goi
phương thức doS@L của lớp elsDatahase như ví dụ 18-7
“Khai bao va khối tao déi tong clsDatabase
Dimecls As New clsDatabase(gsCon)
Gor phuong thức doSQ1, sLrError = cls-doSQbiTcxlBoxl Text }
End Sub
Khi thuc thi phat biéu Insert ding dé thém mau tin vao bang vita
tao ra từ ví du trén, ban khai bdo nhu vi du 16-8
Trang 33
Chuyên đề 16: Làm việc với đối tượng ADO.NET
° Khai báo uà khởi tạo đối tượng cÌsDatabase
Dimclis As New clsDatabase
Chú ý: Trong lớp cÌsDotabơœse, chúng ta cài dat Overload hai
phương thức cùng tên đoSQL nhưng khác nhau về số lượng tham số như
vi du 16-8-1
Nếu bạn có nhu cần lấy ra số mẩu tin thực thi thì bạn sứ dụng
phương thức có hai tham số
i du 16-8-1: Phương thức doSQL (Ovreloading)
Function doSOL (ByVal strSQL As String) As String Dim strError As String = ""
Dim myCon As New SqlConnection({gsCon)
Try
myCon.Open() Dim myCom As New SqlCommand (strSQL, myCon)
myCom.ExecuteNonQuery () Catch ex As Exception
strError = ex.Message Finally
1 Tao tmg dung Windows Forms, cho phép người sử dụng nhập tên cơ
sở dữ liệu và tạo cơ sở đữ liệu dé trong SQL Server
2 Thiết kế Form, cho phép người sử dụng chọn cơ sở đữ liệu đang tổn tai trong SQL Server rồi tạo mới một Tob/e và thêm dữ liệu vào Table dé
Trang 34®
rn 36 Phan I: Ly thuyét tém tdt & vi dụ chuyên để
3 Bang cach si dung diéu khién DataGrid, liét ké danh sdch cdc mau
tin trong bảng vừa tạo trong câu 2, khi người sử dung chon những mẩu tin cần xóa trên các checkbox, lập tức các mẩu tin đó sẽ bị xóa
và ìn ra số mẩu tin đã xóa
5.4.2 Phương thức ExecuteScalar
Trong trường hợp phát biểu S@L dạng Søizet, phương thức sẽ trả
về là một giá trị kiểu objec£ tương ứng với giá trị của cột và hàng đầu tiên Ví dụ, sử dụng phương thức ExecuteScalar bằng khai báo như ví dụ
16-9
Ví dụ 16-9: Phương thức ExecuteScalar'
Function doSQL(ByVal strSQLAs String, _
ByRef Result As object) As String
“ Khui báo biến chuỗi lỗi
Đ1m strError As String = ""
' Khai báo va khởi tạo đối tượng kết nối cơ sở dữ liệu
Dim myCon As New SqlConnection(gsCon)
Try
myCon.Open (}
Dim myCom As SqiCommand
‘ Khoi tao déi tuong SqiCommand
myCom = New Sq]lCommand({strSQL, myCon)
“ Gọi phương thúc ExecuteScalar
mỗi khi gọi phương thức
Trang 35Chuyên đề 16: Làm việc với đối tượng ADO.NET
Ví dụ, trong trường hợp muốn lấy tổng số lượng khách hàng dang
cé trong bang Customers, han chỉ cần khai báo phát biểu S@L dạng Ằelect với phép toán Counf như sau;
Select Count (*; from Custoners
Sau đỏ, trong ứng dung Visual Basic NET, ban gọi phương thức có
tén getValue nhân tham trị là phát biểu S@L dạng Select trả vẻ một giá
tri là tổng số mẩu tin của bảng Custơmers khai báo ở trên và tham biên
la bién object nhu vi du 16-10,
phương thức getValuei
Dim strError As String
Private Sub Buttonl_Click (ByVal sender
System.Cbject, ByVal e As System
* Khai bao nà khởi tạo đổi tượng clsl2atabase
Dim œls As New clsDatabase (gsCon)
Dim obj As Object
“ gọi phương thức gefValue
strError - cls.getValue!TextBoxl.Text, obj) TexlLBox2.Text = obj ToString
Trang 3638 Phần I: Lý thuyết tóm tắt & ví dụ chuyên để
1 Thiết kế #orm, cho phép người sử dụng chọn một sản phẩm trong điều khién ComboBox, sau đó in ra số lượng đang còn trong kho của sản phẩm đó
2 Thiết kế thủ tục nội tại để thêm mẩu tin vao bang có cột số tự động, sau đó khai báo và sử dụng thú tục này với mục đích mỗi khi thêm
một mẩu tín bạn lấy ra được số tự động đó Sau đó, thiết kế Form cho phép người sử dụng thêm tấu tín và trình bày số tự động lấy được ra màn hình
3 Thiết kế Form, liệt kê danh sách các Coun#ry, mỗi khi người sử dụng
chọn một Counry bạn lấy ra khách hàng có số tiền đặt hàng lớn
nhất thuộc Couniry đó, đồng thời trình bày danh sách các đơn đặt
hàng của khách hàng đó trên điều khién DataGrid
5.4.3 Phương thức Executelteuder
Khi bạn muốn truy cập dữ liệu với số lượng nhỏ và không cần xử lý
dữ liệu hay điều hướng trên mẩu tin, ban có thể sử dụng đối tượng
SqiDataReader hay OleDbDataReader
Chẳng hạn, khai báo phương thức có tên ge£Vaiue như ví dụ 16-11
nhận hai tham trị là [sername, Passtuuord và tham biến là mảng dạng
chuỗi Sau đó, chương trình kiểm tra người sử dụng này có tổn tại trong
bảng £b/Dsers (cơ sở dữ liệu Northwind) hay khéng Néu tén tai, chuang trình sẽ gán giá trị của các cột UserID, FullName, Email yao phan ti mảng tương ứng
ï dụ 16-11: Gọi phương thức getValue
‘Truyén hai tham sé la username va password
Function getValue (ByVal Username As String, _
ByVal Password As String, _
ByRef myValues() As String) As String
Dim StrError As String =""
‘ Khai báo phát biểu SQL
Dim strSQL As String
strSQL= "Select Password, "& _
"UserID, FullName, Email From tblusers "& _
"Where UserName='" + Username + "'*
“ Khai báo 0à khỏi tao déi tuang SqlConnection
Dim Conn As SqlConnection = _
New SqlConnection(gsCon)
Trang 37- „ ®
Chuyên để 16: Làm việc với đối tượng ADO.NET 39
‘ Khai bdo vé khdi tao déi tuong SqlCommand
Dim myCom As SqiCommand = _
New SqiCommand (strSQL, Conn) Try
“ Mở kết nối cơ sở dữ liệu SQL Seruer
Conn.Open ()
‘Khai bdo doi tượng SqlDœtaReader, sau đó sử dụng phương
“ thúc ExecuteReader của SqlCommand để điện dữ liệu từ dủ
“ liệu nguồn uào đối tượng Sq1DatuReader
Then
“Gan fullname, email va userId vao mang myValues(1) =_
myRD.GetInt32(1).ToString
myValues(2) = myRD.Get String (2)
myValues (3) =myRD.Get String (3)
Sau đó, thêm Form vao Project vA dat tén frmExecuteReader, thiết
kế một số điều khiển, sau đó khai báo dé goi phuong thie getValue nếu
ngudi sit dung cung cap day dii Username va Password nhu vi dụ 16-12
ï dụ 16-12: Kiểm tra người sử dụng
Private Sub ButEonl_C1ick(Byval sender As
System.Object, ByVal e As System.EVeniLArgs)
Handles Buttonl.Click
Trang 38®
IMAI 40 Phần I: Lý thuyết tóm tắt & ví dụ chuyên dé
“ Vêu câu người sử dụng nhộp username
“ Gọi phương thúc kiém tra username va password
Dim myValues (3) As String
Dimcls As clsDatabage (gsCon)
Dim strError As String = _
clsGetValue (txtUser.Text, _
txtPwd.Text, myValues)
‘Néu gid tri phần tử đầu tiên khúc rỗng, túc là user hợp lệ
Tf Not myValueg (0) Ts NoEhing Then
“In ra UserID TextBox1.Text = myValues(0) + voNewLine
“In ra FullName
TextBoxl.Text += myValues(1) + vbNewLine
‘In ra Email TextBoxl.Text += myValues (2) + vbNewLine End If
End Sub
Lưu ý, cấu trúc của bảng tb/Users duoc định nghĩa bằng phát biểu
CREATE TABLE như sau:
Create Table tblUsers
(
UserID int identity(1,1) primary key,
UserName varchar (20) not null unique,
Password varchar({10) null,
FullName nvarchar(20) null,
Email varchar(20) null,
JoinDate smalidatetime default getdate ()
Trang 395 ®
Chuyên để 16: Làm việc với đối tượng ADO.NET 41
Ban có thể thêm mẩu tín vào bảng ?b!Users bằng cú pháp của phat biểu fnserf như sau:
œrF iInEø Ebllsers (UserName,
sword, FullName, Email}
('Khang','1234', ‘Suu Khang’,
Hinh 16-6: Ket gua dang nhap
Để tìm hiểu thêm về phuong thiic ExecuteReader, ban cé thé thuc hanh các ví dụ sau:
1, Viết ứng dụng Conso¿e, yêu cầu người sử dụng nhập vào tên cơ sở đữ
liệu, bạn liệt kê tên của các đối tượng cơ sở đừ liệu cùng với ngày Lạa
ra nó
9, Thiết kế Form, cho phép liệt kê danh sdéch Country trong bang
Customers vao diéu khién ComboBox
6 LÀM VIỆC VỚI ĐỐI TƯỢNG THAM SỐ
Trong trình bày của phân khai báo và sử dụng phương thức
ExecuteiNonQuery thuộc đối tượng SgICommand, bạn có thể khai báo một phát biểu S@/ dạng hành động bằng cách kết nổi những giá trị từ Forn
nhập liệu, sau đó sử dụng đôi tương SqiComunandl để thực thí chúng
Khi người sử dụng nhập giá trị vào điêu khiển TextBox như hình
16-7 rỗi nhấn nút “Add Data without Parameter”, 16i s@ phat sinh nếu
Trang 40
Phan I: Ly thuyét tom tat & vi du chuyén dé
phat biéu SQL khong xử lý dấu nháy đơn (chúng ta sẽ tìm hiếu cách sử dụng Parưme#er trong nhấn cuối của chuyên để này)
Chẳng hạn, bạn tao mới bảng dữ liệu có tên ¿blS/a/f3 bằng cách
nhân nút Create Table trén Form có tên frmParameter hoặc trong cơ sở
dit ligu SQL Server
i du 16-13: Tao bang dw liéul
Create table tblGlails
(SraftTD int idenlity (1,1), Firs
nvarchar(20), LastName nvarchar {
Ké dén, thiét ké cac diéu khién TextBox cho phép ngudi si dụng
nhập họ và tên của nhản viên
SũL le table thiStaffs(StafflD int idertity[1,1), FustName
nvarcnail20), LastName nyaichar( il
Create Table Bet = rp FistName [fan
Bằng cách gói phương thức doS@L trong lớp clsDaiabase ứng với
phát biểu S@E bạn khai báo trong biến cố C/ek của nút Add Data without Parameter nhu vi du 16-14
16-14: Thực thi phat biéu SQ