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