I E= T*R
LINH KIỆN PHẦN MỀM, TRUY XUẤT DATABASE & KIỂM THỬ PHẦN MỀM
12.6 Lập trình truy xuất database dùng ADO
Định nghĩa DSN (Data source name) miêu tả file database, nếu có bước này, ứng dụng truy xuất database thông qua tên luận lý DSN mà không cần biết chính xác vị trí đường dẫn file database và máy chứa file database. Dùng icon "ODBC ..." trong Control Panel của Windows để định nghĩa DSN.
Trong ứng dụng ta dùng đối tượng ADODB để truy xuất database theo qui trình điển hình sau :
1. tạo 1 đối tượng Connection miêu tả database cần truy xuất.
2. gọi method OpenSchema trên đối tượng Connection để tìm các Table trên database. 3. khi user chọn 1 Table (hay dùng lệnh SQL để miêu tả điều kiện xác định các record),
ta gọi method Execute trên đối tượng Connection để tạo 1 đối tượng RecordSet
chứa các record tìm được.
4. duyệt các record trong RecordSet và xử lý chúng theo yêu cầu. 5. đóng và xóa RecordSet và lập lại các bước 3, 4 để xử lý Table khác.
6. đóng và xóa các đối tượng đã tạo ra để giải phóng bộ nhớ do chúng chiếm.
Thí dụ lập trình truy xuất database dùng ADO
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Chi tiết các thủ tục xử lý sự kiện
Dim adoConnection As ADODB.Connection ' biến tham khảo đến Connection Dim adoRsFields As ADODB.Recordset ' biến tham khảo đến RecordSet
' Thủ tục xử lý click button Browse Private Sub cmdBrowse_Click()
' hiển thị dialog box duyệt và chọn file CommonDialog1.ShowOpen
' hiển thị file được chọn vào textbox
txtFileName.Text = CommonDialog1.FileName
' duyệt các table và hiển thị tên của chúng vào ComboBox ListAccessTables (txtFileName.Text)
End Sub
' Thủ tục phục vụ sự kiện form thay bị thay đổi kích thước.
http://www.foxitsoftware.com For evaluation only.
Private Sub Form_Resize()
' vẽ lại ListBox để phù hợp với kích thước mới của form ScaleMode = vbPixels
RsList.Move 5, 60, Me.ScaleWidth - 10, Me.ScaleHeight - 65 End Sub
Private Sub ListAccessTables(strDBPath As String)
While cbTable.ListCount <> 0 ' Xóa danh sách hiện hành cbTable.RemoveItem 0
Wend
' 1. Tạo 1 connection đến file database
Set adoConnection = New ADODB.Connection
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath ' 2. Duyệt các tables, 'add' tên của từng table vào danh sách ComboBox.
Set adoRsFields = adoConnection.OpenSchema(adSchemaTables) With adoRsFields
Do While Not .EOF
If .Fields("TABLE_TYPE") = "TABLE" Then cbTable.AddItem .Fields("TABLE_NAME") End If
.MoveNext Loop
End With
adoRsFields.Close ' đóng và xóa recordset chứa các table Set adoRsFields = Nothing
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
' lưu ý vẫn để mở Connection đến file database hầu truy xuất lại End Sub
' Thủ tục xử lý click chọn table trong ComboBox Private Sub cbTable_Click()
Dim fcount As Integer, rcount As Integer, strBuf As String
' 3. Tạo đối tượng RecordSet chứa các record của Table được chọn
Set adoRsFields = adoConnection.Execute("SELECT * FROM " & cbTable.Text) ' 4. Duyệt các record trong RecordSet và hiển thị chúng trong ListBox
With adoRsFields
rcount = 0 ' chỉ số record
fcount = .Fields.Count ' số field trong từng record
Do While Not .EOF ' duyệt từng record trong recordset rcount = rcount + 1
strBuf = Str(rcount) & ": " & .Fields(0).Value
For idx = 1 To fcount - 1 ' duyệt từng field và nối kết vào chuỗi strBuf strBuf = strBuf & ", " & .Fields(idx).Value
Next
RsList.AddItem strBuf ' add chuỗi kết quả vào Lisbox .MoveNext ' di chuyển đến record kế tiếp
Loop End With
adoRsFields.Close ' đóng và xóa recordset Set adoRsFields = Nothing
End Sub
http://www.foxitsoftware.com For evaluation only.