VB通過DAO訪問Access數(shù)據(jù)庫
|
|
作者: 發(fā)布時間:2008-08-22 10:10:41 來源:育路計算機考試頻道
|
|
DAO就是Database access Object,,數(shù)據(jù)庫訪問對象的英文縮寫。在VB中提供了兩種與Jet數(shù)據(jù)庫引擎接口的方法:Data控件和數(shù)據(jù)訪問對象(DAO),。Data控件只給出有限的不需編程而能訪問現(xiàn)存數(shù)據(jù)庫的功能,,而DAO模型則是全面控制數(shù)據(jù)庫的完整編程接口。Data控件將常用的DAO功能封裝在其中,,它與DAO控件的關(guān)系就好象內(nèi)存與CACHE之間的關(guān)系一樣,,所以這兩種方法并不是互斥的,實際上,,它們常同時使用 引用DAO類型庫 1,、從“工程”菜單中選擇“引用”菜單項; 2,、在可引用列表框中選擇“Microsoft DAO 3.6 Object Library”項 3,、最后“確定”即可 設(shè)置DAO數(shù)據(jù)類型變量 DAO數(shù)據(jù)類型變量共分成兩種: 1、Database變量 Public db As Database 對應(yīng)于access數(shù)據(jù)庫,,通常在模塊中被定義為Public全程變量 2,、RecordSet變量 Dim rs As RecordSet 設(shè)置DAO數(shù)據(jù)類型變量(二) 建立了數(shù)據(jù)庫對象變量后,我們便可打開數(shù)據(jù)庫了,,在一般情況下都只是訪問一個數(shù)據(jù)庫,,當(dāng)打開數(shù)據(jù)庫后再對數(shù)據(jù)庫中的各個記錄進(jìn)行操作,這就要用到Recordset 對象建立記錄集 例如: 打開數(shù)據(jù)庫 Private Sub Command_OpenDatabase_Click() Dim db as Database Dim rs As Recordset Set db = OpenDatabase ( App.path & "\數(shù)據(jù)庫名稱.mdb" ) Set rs = db.OpenRecordset ( " select * from 表名 " ) End Sub 這樣,,數(shù)據(jù)庫中的記錄便放到Recordset中,,可以進(jìn)行后續(xù)操作Opendatabase 方法 Opendatabase 方法是打開數(shù)據(jù)庫并返回此數(shù)據(jù)庫的database對象,其語法如下: Set database的對象變量=opendatabase ([數(shù)據(jù)庫名稱及路徑],[除外性],[只讀]) 除外性:由true和false值所構(gòu)成,,當(dāng)值為true時代表僅允許唯一的使用者使用數(shù)據(jù)庫,。 只讀:由true和false值所構(gòu)成,為true代表數(shù)據(jù)庫僅提供讀取的服務(wù) Opendatabase 方法(二) OpenDatabase方法有兩種給出路徑的方法 Set db = OpenDatabase ( App.path & "\student.mdb" ) App.path對象返回目前運行程序所在的路徑名稱,,使用相當(dāng)路徑避免了程序變換了路徑的麻煩,,但必須保證數(shù)據(jù)庫和程序在同一文件夾下 Set db=OpenDatabase(“e:\student.mdb" , false,false) Openrecordset 方法 Openrecordset方法用來創(chuàng)建一個新的recordset對象,語法為: Set recordset 對象變量=數(shù)據(jù)庫變量.openrecordset(來源,,種類) Vb所提供的recordset對象有5種,,分別為:表(table)、動態(tài)集(dynaset),、快照集(snapshot),、動態(tài)(dynamic)、正向(forward-only),,其中經(jīng)常用的時動態(tài)集(dynaset),,它實際上是引用一個或多個表種數(shù)據(jù)記錄的集合,是功能最強的數(shù)據(jù)記錄集合類型 Openrecordset 方法 Set rs = db.OpenRecordset ( " select * from 表名 " ) Set rs = db.OpenRecordset ( “ select * from 表名 ”,dbopendynaset Fields集合 Fields集合包括結(jié)果集合全部 Field對象,,這些 Field對象引用方法為: RS.Fields(I),,其中 I是該 Field對象在中的位置序號,從 0開始計數(shù), RS.Fields(0)表示你的數(shù)據(jù)庫的第一個字段,,如: RS.Fields(I)=”111” 使用數(shù)據(jù)庫 當(dāng)打開數(shù)據(jù)庫,,建立Recordset 記錄集后,便可瀏覽,、刪除,、添加、查找數(shù)據(jù)庫中的內(nèi)容 使text顯示數(shù)據(jù)如下: Text1.caption=rs.fields(0) Text1(I).caption=rs.fields(I) Recordcount 屬性 Recordcount 屬性用來記錄目前數(shù)據(jù)記錄的數(shù)量,,如判斷數(shù)據(jù)庫是否為空: If rs.recordcount > 0 then End if 刪除記錄 Private Sub cmd_del_Click() On Error GoTo handle Dim msg as string msg = "是否要刪除記錄"& Chr$(10) msg = msg & label(0) ′把刪除記錄的代號加入msg中 If Msgbox(msg , 17 , "刪除記錄") <> 1 Then Exit sub rs.delete rs.Movenext If rs.EOF = True Then rs.MovePrevious End if 刪除記錄(二) for I = 0 to 11 label(I).caption = rs.Fields(I) & "" next Exit Sub handle: MsgBox "該記錄無法刪除!!!" End SubOn error goto 語法 目的是為了程序運行時,,一旦發(fā)生錯誤,即可通過該程序代碼,,將程序運行流程切換到適當(dāng)位置,,進(jìn)行適當(dāng)處理,避免死機 On error goto 的程序代碼編寫位置,,必須在發(fā)生錯誤的程序代碼之前,,因此,常常將它寫在程序或某個程序功能模塊的最前面 添加記錄 向數(shù)據(jù)庫中添加記錄比較麻煩一點,,大致分為三步:首先,,用AddNew方法向數(shù)據(jù)庫添加一個新的空白記錄;其次,,將要輸入的數(shù)據(jù)分別賦到數(shù)據(jù)庫的各個字段中,;最后,用Updata的方法,,把記錄寫到數(shù)據(jù)庫中去 添加記錄 Private Sub cmd_new_Click() rs.AddNew For I = 0 to 11 rs.Fields(I) = TextBox(I).Text Next rs.Updata End Sub 查找記錄 Private Sub Cmd_search_Click() Set rs = dbase.openRecordset("表名",,dbopenDynaset) rs.findfirst "字段名= ' " & Text.Text & " ' " ′ Text.Text是輸入的關(guān)鍵字 if rs.Nomatch = True then Msgbox "對不起,沒有該記錄" else For I = 0 to 11 label(I).caption = rs.Fields(I) & "" Next End if rs.close End Sub 修改記錄 Rs.edit Rs.fields(I)=text1(I) Rs.updata 育路網(wǎng) |
|