古詩詞大全網 - 成語故事 - 在Visual Basic中用DAO實現數據庫編程

在Visual Basic中用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壹定會幫妳節約寶貴時間 為工作提供方便

lishixinzhi/Article/program/c/201404/30446