我愛學習網-上傳
當前位置: 主頁 > 文庫 > Visual Basic >

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

時間:2018-11-24 22:35來源:我愛學習網 作者:布丁點兒 點擊:

  DAO(DataAccessObject)全稱為數據訪問對象,它是數據庫編程的重要方法之一。DAO的一種面向對象的界面接口,特色為它不是可視化的對象,使用它全部都要靠編碼來完成,DAO是設計關系型數據庫系統結構的對象類的集合。它提供了完成管理這樣一個系統所需的全部操作的屬性和方法,包括創建數據庫,定義表、字段和索引,建立表間的關系,定位和查詢數據庫等工具。由于ADO(ActiveXDataObjectActiveX數據對象)的出現,DAO的使用已大大減少,但它無須使用ODBC(開放數據庫連接)便可連接各個數據源,因而我們仍經常用經典的DAO。下面我向大家詳細介紹如何使用DAO編程。

  DAO使用之前必須先引用。方法為打開VB6.0,從VB的"工程"菜單中,選擇"引用"項,當"引用"對話框出現后,從庫的列表中,選擇"MicrosoftDAO3.51ObjectLibrary",單擊"確定"。現在便可以使用DAO對象庫提供的所有對象進行編程了。

  一、創建數據庫:

  在DAO中用CreatDataBase方法可以根據用戶需求動態的創建數據庫。這一點在程序中是非常有用的。用戶可以根據要求實時建立數據庫。建立過程如下:  

  PrivateSubCom_creat_Click()

  OnErrorGoToErr100

  CreatDataBase"數據庫名稱.mdb",dbLangGeneral

  Msgbox"數據庫建立完畢"

  ExitSub

  Err100:

  MsgBox"不能建立數據庫!"&vbCrLf&vbCrLf&Err.Description,vbInformation

  EndSub

  這樣,數據庫便在當前默認的路徑下建立了。

  二、創建表與字段:

  建立數據庫后,則需要在該數據庫中建立表,這要用到TableDef對象。先定義一個TableDef類型的對象,然后用TableDef集合中Append方法將之追加到數據庫當中去。并且同時定義一個Field對象,用CreatFiele的方法創建一個Field對象,向表中添加字段。例如:

  

  PrivateSubCom_table_Click()

  OnErrorGoToErr100

  DimDefdbAsDataBase

  DimNewTableAsTableDef

  DimNewFieldAsField

  SetDefdb=Workspaces(0).OpenDatabase(App.path&"數據庫名稱.mdb",0,False)

  SetNewTable=DefDataBase.CreateTableDef("表名")

  SetNewField=DefTable.CreateField("字段名",dBText,6)′創建一個字符型的字段,長度為6個字符

  DefTableFields.AppendNewField′字段追加

  DefDatabase.TableDefs.AppendNewTable′表追加

  Msgbox"表建立完畢"

  ExitSub

  Err100:

  MsgBox"對不起,不能建立表。請先再建表前建立數據庫?",vbCritical

  EndSub

  一個數據庫可能有十幾個甚至幾十個字段,一個表中有多少個字段,則要創建多少次并要追加到表中。每建立一個字段后都要用到字段追加命令,但是表追加只需在所有字段建立完成后用一條命令即可完成?!  ?/P>

  三、打開數據庫:

  在VB中,對一個對象變量引用之前必須加以說明。DAO也是如此,必須先聲明數據庫變量,例如:DimdbaseAsDatabase。建立了數據庫對象變量后,我們便可打開數據庫了,在一般情況下都只是訪問一個數據庫,當打開數據庫后再對數據庫中的各個記錄進行操作,這就要用到Recordset對象建立記錄集。例如:  

  PrivateSubCommand_OpenDatabase_Click()

  DimdbaseasDatabase

  DimrsAsRecordset

  Setdbase=OpenDatabase(App.path&"數據庫名稱.mdb")

  Setrs=dbase.OpenRecordset("select*from表名")

  EndSub

  這樣,數據庫中的記錄便放到Recordset中,可以進行后續操作了。

  四、使用數據庫:

  當打開數據庫,建立Recordset記錄集后,便可瀏覽、刪除、添加、查找數據庫中的內容。

  1)向前瀏覽

    PrivateSubcmd_previous_Click()

  rs.MovePrevious

  ifrs.BOF=Truethen

  rs.Movelast

  Endif

  fori=0to11

  label(i).caption=rs.F

  2)向后瀏覽 

  PrivateSubcmd_next_Click()

  rs.MoveNext

  Ifrs.EOF=Truethen

  rs.MoveFirst

  Endif

  fori=0to11

  label(i).caption=rs.Fields(i)&""

  next

  EndSub

  3)刪除記錄

  PrivateSubcmd_del_Click()

  OnErrorGoTohandle

  Dimmsgasstring

  msg="是否要刪除記錄"&Chr$(10)

  msg=msg&label(0)′把刪除記錄的代號加入msg中

  IfMsgbox(msg,17,"刪除記錄")<>1ThenExitsub

  rs.delete

  rs.Movenext

  Ifrs.EOF=TrueThen

  rs.MovePrevious

  Endif

  fori=0to11

  label(i).caption=rs.Fields(i)&""

  next

  handle:

  MsgBox"該記錄無法刪除!!!"

  ExitSub

  EndSub

  4)添加記錄

  向數據庫中添加記錄比較麻煩一點,大致分為三步:首先,用AddNew方法向數據庫添加一個新的空白記錄;其次,將要輸入的數據分別賦到數據庫的各個字段中;最后,用Updata的方法,把記錄寫到數據庫中去。例如: 

  PrivateSubcmd_new_Click()

  rs.AddNew

  Fori=0to11

  rs.Fields(i)=TextBox(i).Text

  Next

  rs.Updata

  EndSub

  5)查找記錄

  查找記錄可以用Find方法,例如:  

  PrivateSubCmd_search_Click()

  Setrs=dbase.openRecordset("表名",dbopenDynaset)

  rs.findfirst"字段名='"&Text.Text&"'"′Text.Text是輸入的關鍵字

  ifrs.Nomatch=Truethen

  Msgbox"對不起,沒有該記錄"

  else

  Fori=0to11

  label(i).caption=rs.Fields(i)&""

  Next

  Endif

  rs.close

  EndSub

  以上只是大致介紹了DAO的一些最常用、最典型的用法,真正要熟練掌握它需要不懈的努力。當你很好的理解了DAO后,對學習新的RDO和ADO也有很大的幫助。并且DAO和ADO可以同時使用,DAO的缺陷在于查找功能不強,沒有ADO方便,但動態創建數據庫卻遠超ADO,因此有時二者結合更強大。我們相信DAO一定會幫你節約寶貴時間,為工作提供方便。

------分隔線----------------------------
    ?分享到??
看看啦
主站蜘蛛池模板: 久久福利一区二区| 国产一区二区不卡老阿姨| 精品无码一区二区三区爱欲| 国产在线精品一区二区在线看| 午夜影视日本亚洲欧洲精品一区 | 伊人激情AV一区二区三区| 日韩高清一区二区三区不卡| 色婷婷av一区二区三区仙踪林| 亚洲大尺度无码无码专线一区| 中文字幕AV一区二区三区| 亚洲av色香蕉一区二区三区| 欧美av色香蕉一区二区蜜桃小说 | 国产A∨国片精品一区二区| 国产一区二区三区在线免费| 日本一区二区三区精品国产| 人成精品视频三区二区一区 | 久久影院亚洲一区| 中文字幕在线观看一区二区 | 亚洲综合av永久无码精品一区二区| 国产精品一区二区av不卡| 手机看片一区二区| 亚洲制服中文字幕第一区| 中文字幕日韩一区二区不卡| 亚洲AV无码一区二区三区久久精品| 精品人妻无码一区二区三区蜜桃一 | 精品91一区二区三区| 果冻传媒一区二区天美传媒| 亚洲熟女少妇一区二区| 中文字幕一区二区三区在线不卡| 国产亚洲福利一区二区免费看| 久久久久国产一区二区| 精品人妻一区二区三区浪潮在线| 国产一区二区三区在线看片| 日本不卡一区二区视频a| 无码一区18禁3D| 亚洲一区二区三区香蕉| 亚洲一区二区无码偷拍| 亚洲第一区在线观看| 无码人妻精品一区二区三区99性 | 日本一区二区免费看| 久久中文字幕无码一区二区|