dao編程
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一定會幫你節約寶貴時間 為工作提供方便
lishixin/Article/program/c/201404/30446