熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> C編程 >> 正文

在Visual Basic中用DAO實現數據庫編程

2022-06-13   來源: C編程 

  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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.