Bài tập thực hành ADO
Trang 1Bài thực hành 1
Kết nối nguồn dữ liệu với đối tượng Connection
1 Tổng quan
Đối tượng Connection được sử dụng để thực hiện một kết nối đến nguồn cơ
sở dữ liệu Đây là đối tượng nằm ở mức cao nhất trong mô hình đối tượng ADO Các thao tác khác trên dữ liệu thông qua các đối tượng như Recordset hay Command đều phải dựa trên một kết nối đã được mở
Trong các ứng dụng cơ sở dữ liệu, việc mở một kết nối cơ sở dữ liệu thường được tiến hành đầu tiên, trước tất cả các thao tác khác Trong bài này,
chúng ta sẽ tìm hiểu về đối tượng Connection và một số thao tác cơ bản trên đối
tượng này
2 Nội dung thực hành
Tạo mới một Project và thiết kế menu cho Form này như sau:
`
2.1 Bổ sung thư viện ADO cho Project
Để có thể sử dụng được các đối tượng ADO, bạn phải bổ sung thư viện này vào Project Tiến hành các bước sau đây:
Chọn menu Project References…
Trong hộp thoại xuất hiện, đánh dấu chọn mục Microsoft ActiveX Data Objects 2.0 Library để bổ sung thư viện này.
Lưu ý: Ở các bài thực hành sau, việc bổ sung thư viện ADO là việc bạn phải thực
hiện cho mỗi một project
2.2 Mở kết nối cơ sở dữ liệu
Việc kết nối cơ sở dữ liệu được thực hiện thông qua đối tượng
ADODB.Connection Thông thường, quá trình này bao gồm các bước sau:
Khai báo biến kết nối Trong hầu hết các ứng dụng, biến kết nối là biến được sử dung xuyên suốt trong chương trình Do đó, biến này thường
Trang 2được khai báo dưới dạng Public hoặc Global trong module chương trình
Biến kết nối được khai báo theo cú pháp sau:
Public|Global|Dim <tên biến> As ADODB.Connection
Tạo mới biến kết nối thông qua câu lệnh có cú pháp như sau:
Set <tên biến> = New ADODB.Connection
Qui định chuỗi tham số kết nối thông qua thuộc tính ConnectionString
của biến kết nối Chuỗi tham số kết nối cung cấp các thông số cần thiết
để có thể thiết lập được kết nối đến nguồn dữ liệu Một chuỗi tham số kết nối được viết dưới dạng
“tham_số_1=giá_trị_1;tham_số_2=giá_trị_2;…”
Qui định một số thuộc tính khác nếu cần thiết
Mở kết nối bằng cách gọi phương thức Open của biến kết nối
Đoạn mã dưới đây khai báo một biến kết nối và thực hiện việc mở kết nối
đến cơ sở dữ liệu có đường dẫn là D:\QLBANHANG.MDB khi sự kiện Click xảy
ra trên menu Open Connection Trong đoạn mã này, biến kết nối (adoCn) được
khai báo ngay trong Form và chỉ có phạm vi sử dụng trong Form này Cần lưu ý rằng, trong hầu hết các chương trình, biến kết nối cần được khai báo để có thể sử dụng thuận lợi trong toàn project
Dim adoCn As ADODB.Connection
Private Sub mnuOpenConnection_Click()
On Error Goto ErrHandle
Set adoCn = New ADODB.Connection
adoCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source = D:\qlbanhang.mdb”
adoCn.Open
MsgBox “Kết nối thành công”
Exit Sub
ErrHandle:
MsgBox Err.Description
End Sub
Chuỗi tham số kết nối của đối tượng Connection trong đoạn mã lệnh trên cung cấp giá trị cho hai tham số:
Provider: Tham số này chỉ ra trình cung cấp sử dụng để thực hiện kết
nối đến cơ sở dữ liệu Trong trường hợp này là trình cung cấp Jet sử dụng cho cơ sở dữ liệu Access Các loại cơ sở dữ liệu khác nhau sẽ có các trình cung cấp khác nhau
Trang 3 Data Source: Tham số này xác định nguồn dữ liệu sẽ kết nối đến.
Trong trường hợp này là tên và đường dẫn đến cơ sở dữ liệu
Ngoài hai tham số trên, trong nhiều trường hợp bạn phải cung cấp thêm một
số tham số khác cho chuỗi tham số kết nối như User ID, Password, Initial Catalog,… (Xem lại bài thực hành 1 để biết được cách có được chuỗi tham số kết
nối)
2.3 Đóng kết nối
Khi một biến kết nối không còn được sử dụng hoặc cần phải mở lại kết nối,
bạn phải đóng kết nối bằng cách gọi phương thức Open Đoạn mã dưới đây thực hiện việc đóng kết nối khi menu Close Connection được nhấp chọn.
Private Sub mnuCloseConnection_Click()
If Not adoCn Is Nothing Then
If adoCn.State = adStateOpen Then
adoCn.Close
End If
Set adoCn = Nothing
End If
End Sub
Trong đoạn chương trình trên, ta dựa vào thuộc tính State của đối tượng adoCn để
xác định xem kết nối đã được mở hay chưa Thuộc tính này cho biết trạng thải hiện tại của một biến kết nối và có thể nhận các giá trị sau:
Hằng giá trị Giá trị Ý nghĩa
adStateClosed 0 Kết nối đang đóng
adStateConnecting 2 Đang thực hiện kết nối
2.4 Sử dụng điều khiển CommonDialog để mở kết nối cơ sở dữ liệu
Trong phần 2.2, bạn đã biết được cách thực hiện việc mở một kết nối đến
cơ sở dữ liệu Tuy nhiên, có thể thấy việc sử dụng đường dẫn đến cơ sở dữ liệu một cách cố định trong mã lệnh sẽ không đảm bảo được tính linh hoạt cho chương trình
Trong phần này, bạn sẽ sử dụng điều khiển CommonDialog cho phép chọn
đường dẫn đến cơ sở dữ liệu khi mở kết nối cơ sở dữ liệu
Bổ sung thêm vào Form điều khiển CommonDialog (Nếu trên ToolBox chưa có điều khiển này thì chọn menu Project Components và đánh dấu
Trang 4chọn mục Microsoft Common Dialog Control 6.0 để bổ sung thêm điều
khiển này vào ToolBox)
Viết lại đoạn mã lệnh cho thủ tục mnuOpenConnection_Click như
sau:
Private Sub mnuOpenConnection_Click()
On Error GoTo ErrHandle
Set adoCn = New ADODB.Connection
CommonDialog1.Filter = "Microsoft Access|*.mdb"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
adoCn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = " + CommonDialog1.FileName adoCn.Open
MsgBox "Da ket noi co so du lieu"
Exit Sub
ErrHandle:
MsgBox Err.Description
End Sub
Chạy kiểm thử chương trình, bạn sẽ thấy được mỗi khi ta nhấp chọn menu Open Connection, hộp thoại Open sẽ xuất hiện để cho phép bạn chọn cơ sở dữ liệu cần mở
3 Yêu cầu bổ sung
Qua nội dung thực hành ở trên, bạn có thể thấy rằng việc mở kết nối cơ sở
dữ liệu là thao tác được tiến hành trước các thao tác khác trên cơ sở dữ liệu Ngoài
ra, một biến kết nối không phải chỉ sử dụng trong một module nào đó mà được sử dụng trong phạm vi toàn chương trình Do vậy, biến kết nối cần phải được khai báo dưới dạng Public (hoặc Global) trong module chương trình
Phần này yêu cầu bạn thiết kế một hệ thống menu hoàn chỉnh cho một chương trình ứng dụng và lập trình xử lý việc mở và đóng kết nối cơ sở dữ liệu cho chương trình Ngoài ra, bạn sẽ phải thiết lập trạng thái của menu tương ứng với trạng thái kết nối/hoặc không kết nối cơ sở dữ liệu của biến kết nối
3.1 Thiết kế giao diện chương trình
Tạo mới một Project và bổ sung vào project này:
Một MDI Form: đặt tên là MainForm Đây sẽ là form chính của
chương trình
Một Module và đặt tên là mdlMain.
Thiết lập thuộc tính Startup Object cho Project là MainForm.
Thiết kế hệ thống menu cho form chính theo như mô tả ở bảng sau
Trang 5Menu Tên menu
Chi trả lương tháng mnuTraluong
3.2 Lập trình
1 Viết thủ tục sau đây cho MainForm Thủ tục có chức năng thiết lập trạng thái cho các menu trên Form tùy thuộc vào việc kết nối cơ sở dữ liệu đã được mở
hay chưa Tham số của thủ tục có giá trị là True nếu kết nối đã mở và nhận giá trị là False nếu ngược lại.
Public Sub ThietlapTrangthaiMenu(Byval daketnoi As Boolean)
mnuMoCSDL.Enabled = Not daketnoi
mnuDongCSDL.Enabled = daketnoi
mnuDulieu.Visible = daketnoi
mnuTacnghiep.Visible = daketnoi
mnuInan.Visible = daketnoi
End Sub
2 Tại thủ tục đáp ứng sự kiện Form_Load của MainForm, gọi thủ tục trên với tham số là False
Private Sub MDIForm_Load()
‘Trạng thái menu khi chưa mở kết nối CSDL
ThietlapTrangthaiMenu False
End Sub
3 Lập trình xử lý sự kiện Click trên menu Mở CSDL (mnuMoCSDL) và Đóng CSDL (mnuDongCSDL) để thực hiện việc mở và đóng CSDL Lưu ý:
Trang 6 Sau khi mở hoặc đóng CSDL phải thiết lập lại trạng thái của menu
cho phù hợp (bằng cách gọi thủ tục ThietlapTrangthaiMenu)
Biến kết nối phải được khai báo dưới dạng Public trong module
mdlMain.
3.3 Kết nối với các nguồn dữ liệu khác
Hãy thiết kế và viết lại chương trình trong trường hợp CSDL bạn sử dụng không phải được tổ chức bởi Microsoft Access mà bởi các hệ quản trị CSDL khác như SQL Server, Oracle,…