使用ADO控件可以方便的在VB6中訪問(wèn)ODBC數(shù)據(jù)庫(kù),但是通過(guò)直接放置ADODS控件來(lái)獲得ADO的數(shù)據(jù)連接比較麻煩,我們可以在VB工程中創(chuàng)建一個(gè)公共數(shù)據(jù)模塊,將ADO控件的初始化、建立連接、關(guān)閉連接等操作都寫到函數(shù)中,這樣就可以在工程的其他模塊中共享調(diào)用這個(gè)ADO連接。
一次完整的ADO調(diào)用操作分為如下幾個(gè)步驟:
1.打開(kāi)ADO到數(shù)據(jù)庫(kù)的連接,初始化ADO RECORDSET集。
2.通過(guò)寫入SQL語(yǔ)句執(zhí)行查詢并返回查詢結(jié)果RECORDSET集;或者可以通過(guò)寫入SQL語(yǔ)句執(zhí)行相應(yīng)數(shù)據(jù)庫(kù)操作。
3.釋放RECORDSET集,關(guān)閉數(shù)據(jù)庫(kù)連接。
需要注意的是,每個(gè)動(dòng)態(tài)創(chuàng)建的ADO同時(shí)只能被一個(gè)過(guò)程調(diào)用,如果需要進(jìn)行多表并行操作,可能需要在公共數(shù)據(jù)模塊中建立多個(gè)動(dòng)態(tài)ADO。
下面是相關(guān)的代碼:
'-----------------------------------------------------------------
'如下代碼保存在名為my.bas的工程模塊中
Public CONN As Adodb.Connection
Public RS As Adodb.Recordset
'****************************
'打開(kāi)數(shù)據(jù)庫(kù)連接
'****************************
Function ConnOpen()
End Function
'****************************
'關(guān)閉數(shù)據(jù)庫(kù)
'****************************
Function ConnClose()
End Function
'**********************************************************
'
'
'**********************************************************
Public Function GetDatabasePath() As String
End Function
'End of my.bas
'-----------------------------------------------------------------
如下示例代碼為my.bas的使用方法:
'-----------------------------------------------------------------
'使用RS對(duì)象執(zhí)行SELECT語(yǔ)句
'TableName和FieldName分別為表名和字段名
'查詢結(jié)果保存在數(shù)組s中
Private Sub RunSelectCommand()
End Sub
'使用CONN對(duì)象執(zhí)行UPDATE/DELETE/INSERT語(yǔ)句
'SQL語(yǔ)句放在變量sSQL中
Private Sub RunSqlCommand()
End sub
'對(duì)于DATAGRID和DATAREPORT這些需要DATASOURCE的控件可以做如下操作
'使用SELECT語(yǔ)句打開(kāi)RS的數(shù)據(jù)集
Set OBJ.Datasource=my.RS
'---------------------------------------------------------------------
這個(gè)方法對(duì)于開(kāi)發(fā)簡(jiǎn)單小型的MIS系統(tǒng)很實(shí)用,也可以在報(bào)表和數(shù)據(jù)表中使用,缺點(diǎn)是在多表操作和函數(shù)嵌套調(diào)用時(shí),一個(gè)動(dòng)態(tài)ADO對(duì)象不能同時(shí)執(zhí)行兩個(gè)工作,后一個(gè)寫入的SQL語(yǔ)句會(huì)覆蓋先寫入的SQL語(yǔ)句,當(dāng)在回到前一個(gè)過(guò)程時(shí),會(huì)因?yàn)樽侄握也坏蕉鲥e(cuò)。因此如果可能需要進(jìn)行多表操作,可以嘗試多定義幾個(gè)CONN 和RS對(duì)象。