DAO(Data Access Object)全稱為數(shù)據(jù)訪問對(duì)象,它是數(shù)據(jù)庫(kù)編程的重要方法之一。DAO的一種面向?qū)ο蟮慕缑娼涌?特色為它不是可視化的對(duì)象,使用它全部都要靠編碼來完成,DAO是設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)的對(duì)象類的集合。它提供了完成管理這樣一個(gè)系統(tǒng)所需的全部操作的屬性和方法,包括創(chuàng)建數(shù)據(jù)庫(kù),定義表、字段和索引,建立表間的關(guān)系,定位和查詢數(shù)據(jù)庫(kù)等工具。由于ADO(ActiveX Data Object ActiveX 數(shù)據(jù)對(duì)象)的出現(xiàn),DAO的使用已大大減少,但它無須使用ODBC(開放數(shù)據(jù)庫(kù)連接)便可連接各個(gè)數(shù)據(jù)源,因而我們?nèi)越?jīng)常用經(jīng)典的DAO。下面我向大家詳細(xì)介紹如何使用DAO編程。
DAO使用之前必須先引用。方法為打開VB6.0 , 從VB的"工程"菜單中,選擇"引用"項(xiàng),當(dāng)"引用"對(duì)話框出現(xiàn)后,從庫(kù)的列表中,選擇"Microsoft DAO 3.51 Object Library",單擊"確定"?,F(xiàn)在便可以使用DAO對(duì)象庫(kù)提供的所有對(duì)象進(jìn)行編程了。
一、 創(chuàng)建數(shù)據(jù)庫(kù):
在DAO中用CreatDataBase方法可以根據(jù)用戶需求動(dòng)態(tài)的創(chuàng)建數(shù)據(jù)庫(kù)。這一點(diǎn)在程序中是非常有用的。用戶可以根據(jù)要求實(shí)時(shí)建立數(shù)據(jù)庫(kù)。建立過程如下:
Private Sub Com_creat_Click()
On Error GoTo Err100
CreatDataBase "數(shù)據(jù)庫(kù)名稱.mdb" ,dbLangGeneral
Msgbox "數(shù)據(jù)庫(kù)建立完畢"
Exit Sub
Err100:
MsgBox "不能建立數(shù)據(jù)庫(kù)! " & vbCrLf & vbCrLf & Err.Description, vbInformation
End Sub
這樣,數(shù)據(jù)庫(kù)便在當(dāng)前默認(rèn)的路徑下建立了。
二、 創(chuàng)建表與字段:
建立數(shù)據(jù)庫(kù)后,則需要在該數(shù)據(jù)庫(kù)中建立表,這要用到TableDef 對(duì)象。先定義一個(gè)TableDef類型的對(duì)象,然后用TableDef集合中Append方法將之追加到數(shù)據(jù)庫(kù)當(dāng)中去。并且同時(shí)定義一個(gè)Field對(duì)象,用CreatFiele的方法創(chuàng)建一個(gè)Field對(duì)象,向表中添加字段。例如:
Private Sub Com_table_Click()
On Error GoTo Err100
Dim Defdb As DataBase
Dim NewTable As TableDef
Dim NewField As Field
Set Defdb = Workspaces(0).OpenDatabase (App.path & "\數(shù)據(jù)庫(kù)名稱.mdb" ,0, False)
Set NewTable = DefDataBase.CreateTableDef("表名")
Set NewField = DefTable.CreateField( "字段名" , dbText ,6) ′創(chuàng)建一個(gè)字符型的字段,長(zhǎng)度為6個(gè)字符
DefTableFields.Append NewField ′字段追加
DefDatabase.TableDefs.Append NewTable ′表追加
Msgbox " 表建立完畢 "
Exit Sub
Err100:
MsgBox "對(duì)不起,不能建立表。請(qǐng)先再建表前建立數(shù)據(jù)庫(kù)?", vbCritical
End Sub
一個(gè)數(shù)據(jù)庫(kù)可能有十幾個(gè)甚至幾十個(gè)字段,一個(gè)表中有多少個(gè)字段,則要?jiǎng)?chuàng)建多少次并要追加到表中。每建立一個(gè)字段后都要用到字段追加命令,但是表追加只需在所有字段建立完成后用一條命令即可完成?! ?BR> 三、 打開數(shù)據(jù)庫(kù):
在VB中,對(duì)一個(gè)對(duì)象變量引用之前必須加以說明。DAO也是如此,必須先聲明數(shù)據(jù)庫(kù)變量,例如:Dim dbase As Database 。建立了數(shù)據(jù)庫(kù)對(duì)象變量后,我們便可打開數(shù)據(jù)庫(kù)了,在一般情況下都只是訪問一個(gè)數(shù)據(jù)庫(kù),當(dāng)打開數(shù)據(jù)庫(kù)后再對(duì)數(shù)據(jù)庫(kù)中的各個(gè)記錄進(jìn)行操作,這就要用到Recordset 對(duì)象建立記錄集。例如:
Private Sub Command_OpenDatabase_Click()
Dim dbase as Database
Dim rs As Recordset
Set dbase = OpenDatabase ( App.path & "\數(shù)據(jù)庫(kù)名稱.mdb" )
Set rs = dbase.OpenRecordset ( " select * from 表名 " )
End Sub
這樣,數(shù)據(jù)庫(kù)中的記錄便放到Recordset中,可以進(jìn)行后續(xù)操作了。
四、 使用數(shù)據(jù)庫(kù):
當(dāng)打開數(shù)據(jù)庫(kù),建立Recordset 記錄集后,便可瀏覽、刪除、添加、查找數(shù)據(jù)庫(kù)中的內(nèi)容。
DAO使用之前必須先引用。方法為打開VB6.0 , 從VB的"工程"菜單中,選擇"引用"項(xiàng),當(dāng)"引用"對(duì)話框出現(xiàn)后,從庫(kù)的列表中,選擇"Microsoft DAO 3.51 Object Library",單擊"確定"?,F(xiàn)在便可以使用DAO對(duì)象庫(kù)提供的所有對(duì)象進(jìn)行編程了。
一、 創(chuàng)建數(shù)據(jù)庫(kù):
在DAO中用CreatDataBase方法可以根據(jù)用戶需求動(dòng)態(tài)的創(chuàng)建數(shù)據(jù)庫(kù)。這一點(diǎn)在程序中是非常有用的。用戶可以根據(jù)要求實(shí)時(shí)建立數(shù)據(jù)庫(kù)。建立過程如下:
Private Sub Com_creat_Click()
On Error GoTo Err100
CreatDataBase "數(shù)據(jù)庫(kù)名稱.mdb" ,dbLangGeneral
Msgbox "數(shù)據(jù)庫(kù)建立完畢"
Exit Sub
Err100:
MsgBox "不能建立數(shù)據(jù)庫(kù)! " & vbCrLf & vbCrLf & Err.Description, vbInformation
End Sub
這樣,數(shù)據(jù)庫(kù)便在當(dāng)前默認(rèn)的路徑下建立了。
二、 創(chuàng)建表與字段:
建立數(shù)據(jù)庫(kù)后,則需要在該數(shù)據(jù)庫(kù)中建立表,這要用到TableDef 對(duì)象。先定義一個(gè)TableDef類型的對(duì)象,然后用TableDef集合中Append方法將之追加到數(shù)據(jù)庫(kù)當(dāng)中去。并且同時(shí)定義一個(gè)Field對(duì)象,用CreatFiele的方法創(chuàng)建一個(gè)Field對(duì)象,向表中添加字段。例如:
Private Sub Com_table_Click()
On Error GoTo Err100
Dim Defdb As DataBase
Dim NewTable As TableDef
Dim NewField As Field
Set Defdb = Workspaces(0).OpenDatabase (App.path & "\數(shù)據(jù)庫(kù)名稱.mdb" ,0, False)
Set NewTable = DefDataBase.CreateTableDef("表名")
Set NewField = DefTable.CreateField( "字段名" , dbText ,6) ′創(chuàng)建一個(gè)字符型的字段,長(zhǎng)度為6個(gè)字符
DefTableFields.Append NewField ′字段追加
DefDatabase.TableDefs.Append NewTable ′表追加
Msgbox " 表建立完畢 "
Exit Sub
Err100:
MsgBox "對(duì)不起,不能建立表。請(qǐng)先再建表前建立數(shù)據(jù)庫(kù)?", vbCritical
End Sub
一個(gè)數(shù)據(jù)庫(kù)可能有十幾個(gè)甚至幾十個(gè)字段,一個(gè)表中有多少個(gè)字段,則要?jiǎng)?chuàng)建多少次并要追加到表中。每建立一個(gè)字段后都要用到字段追加命令,但是表追加只需在所有字段建立完成后用一條命令即可完成?! ?BR> 三、 打開數(shù)據(jù)庫(kù):
在VB中,對(duì)一個(gè)對(duì)象變量引用之前必須加以說明。DAO也是如此,必須先聲明數(shù)據(jù)庫(kù)變量,例如:Dim dbase As Database 。建立了數(shù)據(jù)庫(kù)對(duì)象變量后,我們便可打開數(shù)據(jù)庫(kù)了,在一般情況下都只是訪問一個(gè)數(shù)據(jù)庫(kù),當(dāng)打開數(shù)據(jù)庫(kù)后再對(duì)數(shù)據(jù)庫(kù)中的各個(gè)記錄進(jìn)行操作,這就要用到Recordset 對(duì)象建立記錄集。例如:
Private Sub Command_OpenDatabase_Click()
Dim dbase as Database
Dim rs As Recordset
Set dbase = OpenDatabase ( App.path & "\數(shù)據(jù)庫(kù)名稱.mdb" )
Set rs = dbase.OpenRecordset ( " select * from 表名 " )
End Sub
這樣,數(shù)據(jù)庫(kù)中的記錄便放到Recordset中,可以進(jìn)行后續(xù)操作了。
四、 使用數(shù)據(jù)庫(kù):
當(dāng)打開數(shù)據(jù)庫(kù),建立Recordset 記錄集后,便可瀏覽、刪除、添加、查找數(shù)據(jù)庫(kù)中的內(nèi)容。

