DAO(DataAccessObject)全稱為數據訪問對象它是數據庫編程的重要方法之一DAO的一種面向對象的界面接口特色為它不是可視化的對象使用它全部都要靠編碼來完成DAO是設計關系型數據庫系統結構的對象類的集合它提供了完成管理這樣一個系統所需的全部操作的屬性和方法包括創建數據庫定義表字段和索引建立表間的關系定位和查詢數據庫等工具由於ADO(ActiveXDataObjectActiveX數據對象)的出現DAO的使用已大大減少但它無須使用ODBC(開放數據庫連接)便可連接各個數據源因而我們仍經常用經典的DAO下面我向大家詳細介紹如何使用DAO編程
DAO使用之前必須先引用方法為打開VB從VB的工程菜單中選擇引用項當引用對話框出現後從庫的列表中選擇MicrosoftDAOObjectLibrary單擊確定現在便可以使用DAO對象庫提供的所有對象進行編程了
一創建數據庫
在DAO中用CreatDataBase方法可以根據用戶需求動態的創建數據庫這一點在程序中是非常有用的用戶可以根據要求實時建立數據庫建立過程如下
PrivateSubCom_creat_Click()
OnErrorGoToErr
CreatDataBase數據庫名稱mdbdbLangGeneral
Msgbox數據庫建立完畢
ExitSub
Err:
MsgBox不能建立數據庫!&vbCrLf&vbCrLf&ErrDescriptionvbInformation
EndSub
這樣數據庫便在當前默認的路徑下建立了
二創建表與字段
建立數據庫後則需要在該數據庫中建立表這要用到TableDef對象先定義一個TableDef類型的對象然後用TableDef集合中Append方法將之追加到數據庫當中去並且同時定義一個Field對象用CreatFiele的方法創建一個Field對象向表中添加字段例如:
PrivateSubCom_table_Click()
OnErrorGoToErr
DimDefdbAsDataBase
DimNewTableAsTableDef
DimNewFieldAsField
SetDefdb=Workspaces()OpenDatabase(Apppath&數據庫名稱mdbFalse)
SetNewTable=DefDataBaseCreateTableDef(表名)
SetNewField=DefTableCreateField(字段名dBText)′創建一個字符型的字段長度為個字符
DefTableFieldsAppendNewField′字段追加
DefDatabaseTableDefsAppendNewTable′表追加
Msgbox表建立完畢
ExitSub
Err:
MsgBox對不起不能建立表請先再建表前建立數據庫?vbCritical
EndSub
一個數據庫可能有十幾個甚至幾十個字段一個表中有多少個字段則要創建多少次並要追加到表中每建立一個字段後都要用到字段追加命令但是表追加只需在所有字段建立完成後用一條命令即可完成
三打開數據庫
在VB中對一個對象變量引用之前必須加以說明DAO也是如此必須先聲明數據庫變量例如DimdbaseAsDatabase建立了數據庫對象變量後我們便可打開數據庫了在一般情況下都只是訪問一個數據庫當打開數據庫後再對數據庫中的各個記錄進行操作這就要用到Recordset對象建立記錄集例如
PrivateSubCommand_OpenDatabase_Click()
DimdbaseasDatabase
DimrsAsRecordset
Setdbase=OpenDatabase(Apppath&數據庫名稱mdb)
Setrs=dbaseOpenRecordset(select*from表名)
EndSub
這樣數據庫中的記錄便放到Recordset中可以進行後續操作了
四使用數據庫
當打開數據庫建立Recordset記錄集後便可浏覽刪除添加查找數據庫中的內容
)向前浏覽
PrivateSubcmd_previous_Click()
rsMovePrevious
ifrsBOF=Truethen
rsMovelast
Endif
fori=to
label(i)caption=rsF
)向後浏覽
PrivateSubcmd_next_Click()
rsMoveNext
IfrsEOF=Truethen
rsMoveFirst
Endif
fori=to
label(i)caption=rsFields(i)&
next
EndSub
)刪除記錄
PrivateSubcmd_del_Click()
OnErrorGoTohandle
Dimmsgasstring
msg=是否要刪除記錄&Chr$()
msg=msg&label()′把刪除記錄的代號加入msg中
IfMsgbox(msg刪除記錄)<>ThenExitsub
rsdelete
rsMovenext
IfrsEOF=TrueThen
rsMovePrevious
Endif
fori=to
label(i)caption=rsFields(i)&
next
handle:
MsgBox該記錄無法刪除!!!
ExitSub
EndSub
)添加記錄
向數據庫中添加記錄比較麻煩一點大致分為三步首先用AddNew方法向數據庫添加一個新的空白記錄其次將要輸入的數據分別賦到數據庫的各個字段中最後用Updata的方法把記錄寫到數據庫中去例如
PrivateSubcmd_new_Click()
rsAddNew
Fori=to
rsFields(i)=TextBox(i)Text
Next
rsUpdata
EndSub
)查找記錄
查找記錄可以用Find方法例如
PrivateSubCmd_search_Click()
Setrs=dbaseopenRecordset(表名dbopenDynaset)
rsfindfirst字段名=&TextText&′TextText是輸入的關鍵字
ifrsNomatch=Truethen
Msgbox對不起沒有該記錄
else
Fori=to
label(i)caption=rsFields(i)&
Next
Endif
rsclose
EndSub
以上只是大致介紹了DAO的一些最常用最典型的用法真正要熟練掌握它需要不懈的努力當你很好的理解了DAO後對學習新的RDO和ADO也有很大的幫助並且DAO和ADO可以同時使用DAO的缺陷在於查找功能不強沒有ADO方便但動態創建數據庫卻遠超ADO因此有時二者結合更強大我們相信DAO一定會幫你節約寶貴時間為工作提供方便
From:http://tw.wingwit.com/Article/program/c/201404/30446.html