曹靜
摘 要:本文通過分析ADO訪問數(shù)據(jù)庫的兩種方法,在實(shí)際應(yīng)用中總結(jié)對數(shù)據(jù)庫的基本的增刪改查操作,實(shí)現(xiàn)了對信息系統(tǒng)數(shù)據(jù)的處理功能。
關(guān)鍵詞:ADO對象;數(shù)據(jù)處理;功能
DOI:10.16640/j.cnki.37-1222/t.2015.24.098
1 引言
在Visual Basic的開發(fā)環(huán)境中,常用的數(shù)據(jù)庫訪問有DAO/RDO/ADO三種對象模型。在這三種對象模型中,ADO是RDO和DAO的后繼產(chǎn)物,它集成了DAO和RDO的優(yōu)點(diǎn),使用更靈活,訪問數(shù)據(jù)的效率更高,是VB訪問數(shù)據(jù)庫的一個(gè)新接口,適合于各種客戶/服務(wù)器應(yīng)用系統(tǒng)和基于Web的應(yīng)用系統(tǒng)。
2 ADO訪問數(shù)據(jù)庫的方法
在VB中,使用ADO訪問數(shù)據(jù)庫主要有兩種方式:一種是使用ADO Data 控件綁定來訪問數(shù)據(jù)庫中的數(shù)據(jù);一種是使用ADO對象模型即編程方式來實(shí)現(xiàn)。前者的優(yōu)勢在于編程人員可以通過很少的代碼創(chuàng)建數(shù)據(jù)庫的鏈接,直接將數(shù)據(jù)顯示在相關(guān)表格控件中,這種方法最大的缺陷就是功能不是那么靈活,在大型數(shù)據(jù)庫信息系統(tǒng)中,效率低下,通常是初學(xué)者的首選方法;而后者通常被應(yīng)用在大型數(shù)據(jù)庫信息系統(tǒng)中,ADO對象提供了大多數(shù)應(yīng)用程序需要的所有的數(shù)據(jù)訪問和處理功能,它在應(yīng)用程序和數(shù)據(jù)源交互方式上提供了更好的控制,可以創(chuàng)建更為靈活更為強(qiáng)大的應(yīng)用程序。
3 ADO在簡單登記系統(tǒng)中的應(yīng)用
本系統(tǒng),是通過VB連接Access數(shù)據(jù)庫,實(shí)現(xiàn)對加工工件的登記、修改、查詢、刪除功能,下面通過具體的實(shí)現(xiàn)來討論ADO數(shù)據(jù)控件通過非編程方式實(shí)現(xiàn)對ACCESS數(shù)據(jù)庫的訪問。
(1)使用ADOData控件訪問數(shù)據(jù)庫。在數(shù)據(jù)庫中已建立了一個(gè)工件登記數(shù)據(jù)庫(db2.mdb),庫中有“basic_infor”、“company_infor”兩張數(shù)據(jù)表。具體實(shí)現(xiàn)過程如下:
1)首先將ADODC控件添加到工具箱。
2)設(shè)置連接屬性字符串ConnectionString為“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db2.mdb;Persist Security Info=False”,設(shè)置commandType屬性為:“2-adCmdTable”。
3)添加數(shù)據(jù)至數(shù)據(jù)表:
Adodc1.RecordSource = "basic_infor"
Adodc1.Refresh
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("公司名稱") = Text1.Text
Adodc1.Recordset.Fields("登記日期") = DTPicker1.Value
……
Adodc1.Recordset.Update
4)刪除數(shù)據(jù)
Set rs1 = Adodc1.Recordset
qr = MsgBox("是否要?jiǎng)h除該記錄", vbYesNo, "確認(rèn)")
If qr = vbYes Then
If rs1.EOF Then
MsgBox "此公司沒有相關(guān)信息!", , "提示"
Exit Sub
Else
rs1.Delete
rs1.MoveFirst
Adodc1.Refresh
DataGrid1.Refresh
End If
End If
5)修改數(shù)據(jù)操作可在數(shù)據(jù)庫綁定的數(shù)據(jù)表中直接修改,保存即可。
6)在數(shù)據(jù)庫中查詢指定公司名稱的記錄,將查詢結(jié)果顯示在datagrid控件中,按照日期排序。
a = DataCombo1.BoundText
Adodc2.Recordset.MoveFirst
Adodc2.Recordset.Find ("公司名稱='" & a & "'")
If Adodc2.Recordset.EOF Then
MsgBox "未查詢到!", , "注意"
Exit Sub
End If
b = "select * from basic_infor where 公司名稱 = '" & Adodc2.Recordset("公司名稱") & "'order by 登記日期 "
Adodc1.RecordSource = b
Adodc1.Refresh
(2)使用ADO對象模型訪問數(shù)據(jù)庫。首先在“工程”菜單下的“引用”子菜單引用“Microsoft ActiveX Data Object 2.1 Library”,然后通過以下五個(gè)步驟完成數(shù)據(jù)庫的訪問。
1)創(chuàng)建鏈接:Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & App.Path & "\db2.mdb"
2)打開鏈接:conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db2.mdb;"
3)創(chuàng)建和打開記錄集:Dim adoPrimaryRS As ADODB.Recordset
adoPrimaryRS.Open "select * from basic_infor order by 登記日期 ", conn, adOpenStatic, adLockOptimistic
4)操作記錄集中的數(shù)據(jù):①增加一條記錄
adoPrimaryRS.AddNew
adoPrimaryRS.Fields("公司名稱") = Text1.Text
……
adoPrimaryRS.Update
②刪除一條記錄。通過if條件語句判斷是否刪除,執(zhí)行刪除操作:
AdoPrimaryRS.Delete
AdoPrimaryRS.MoveFirst
③修改記錄。修改記錄的代碼與增加記錄代碼相似,不同在于修改記錄內(nèi)部不能有adoPrimaryRS.AddNew語句,否則出錯(cuò)。
④查找記錄。通過Command對象的Execute方法來查找返回符合條件的記錄集。Set adoPrimaryRS = command.Execute(RecordsAffected,Parameters,Options)
5)關(guān)閉鏈接和記錄集(先關(guān)閉記錄集再關(guān)閉鏈接)
adoPrimaryRS.Close
conn.close
4 結(jié)束語
通過Ado對象訪問數(shù)據(jù)庫的方法是程序員編碼最基本的技術(shù)之一,而且是信息系統(tǒng)開發(fā)的重點(diǎn),其代碼質(zhì)量的優(yōu)良與否成為信息系統(tǒng)穩(wěn)定性的一個(gè)至關(guān)重要的因素,因此, ADO技術(shù)的解析應(yīng)用非常有必要。
參考文獻(xiàn):
[1]張宗飛.VB中基于ADO的數(shù)據(jù)庫訪問技術(shù)分析及應(yīng)用[Z].計(jì)算機(jī)與數(shù)字工程,2008(03):53-55.
[2]張樹兵等編著.Visual Basic6.0入門與提高[M].北京:清華大學(xué)出版社,1999.endprint