一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

在VB中用DAO實(shí)現(xiàn)數(shù)據(jù)庫編程(1)

 悟靜 2009-07-21

DAO(Data Access Object)全稱為數(shù)據(jù)訪問對(duì)象,它是數(shù)據(jù)庫編程的重要方法之一。DAO的一種面向?qū)ο蟮慕缑娼涌?特色為它不是可視化的對(duì)象,使用它全部都要靠編碼來完成,DAO是設(shè)計(jì)關(guān)系型數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的對(duì)象類的集合。它提供了完成管理這樣一個(gè)系統(tǒng)所需的全部操作的屬性和方法,包括創(chuàng)建數(shù)據(jù)庫,定義表、字段和索引,建立表間的關(guān)系,定位和查詢數(shù)據(jù)庫等工具。由于ADO(ActiveX Data Object ActiveX 數(shù)據(jù)對(duì)象)的出現(xiàn),DAO的使用已大大減少,但它無須使用ODBC(開放數(shù)據(jù)庫連接)便可連接各個(gè)數(shù)據(jù)源,因而我們?nèi)越?jīng)常用經(jīng)典的DAO。下面我向大家詳細(xì)介紹如何使用DAO編程。

  DAO使用之前必須先引用。方法為打開VB6.0 , 從VB的"工程"菜單中,選擇"引用"項(xiàng),當(dāng)"引用"對(duì)話框出現(xiàn)后,從庫的列表中,選擇"Microsoft DAO 3.51 Object Library",單擊"確定"。現(xiàn)在便可以使用DAO對(duì)象庫提供的所有對(duì)象進(jìn)行編程了。

     一、 創(chuàng)建數(shù)據(jù)庫:

  在DAO中用CreatDataBase方法可以根據(jù)用戶需求動(dòng)態(tài)的創(chuàng)建數(shù)據(jù)庫。這一點(diǎn)在程序中是非常有用的。用戶可以根據(jù)要求實(shí)時(shí)建立數(shù)據(jù)庫。建立過程如下:

Private Sub Com_creat_Click()
On Error GoTo Err100
CreatDataBase "數(shù)據(jù)庫名稱.mdb" ,dbLangGeneral
Msgbox "數(shù)據(jù)庫建立完畢"
Exit Sub
Err100:
MsgBox "不能建立數(shù)據(jù)庫! " & vbCrLf & vbCrLf & Err.Description, vbInformation
End Sub

  這樣,數(shù)據(jù)庫便在當(dāng)前默認(rèn)的路徑下建立了。

  二、 創(chuàng)建表與字段:

  建立數(shù)據(jù)庫后,則需要在該數(shù)據(jù)庫中建立表,這要用到TableDef 對(duì)象。先定義一個(gè)TableDef類型的對(duì)象,然后用TableDef集合中Append方法將之追加到數(shù)據(jù)庫當(dāng)中去。并且同時(shí)定義一個(gè)Field對(duì)象,用CreatFiele的方法創(chuàng)建一個(gè)Field對(duì)象,向表中添加字段。例如:

Private Sub Com_table_Click()
On Error GoTo Err100
Dim Defdb As DataBase
Dim NewTable As TableDef
Dim NewField As Field
Set Defdb = Workspaces(0).OpenDatabase (App.path & "\數(shù)據(jù)庫名稱.mdb" ,0, False)
Set NewTable = DefDataBase.CreateTableDef("表名")
Set NewField = DefTable.CreateField( "字段名" , dbText ,6) ′創(chuàng)建一個(gè)字符型的字段,長度為6個(gè)字符
DefTableFields.Append NewField ′字段追加
DefDatabase.TableDefs.Append NewTable ′表追加
Msgbox " 表建立完畢 "
Exit Sub
Err100:
MsgBox "對(duì)不起,不能建立表。請(qǐng)先再建表前建立數(shù)據(jù)庫?", vbCritical
End Sub

  一個(gè)數(shù)據(jù)庫可能有十幾個(gè)甚至幾十個(gè)字段,一個(gè)表中有多少個(gè)字段,則要?jiǎng)?chuàng)建多少次并要追加到表中。每建立一個(gè)字段后都要用到字段追加命令,但是表追加只需在所有字段建立完成后用一條命令即可完成。
    三、 打開數(shù)據(jù)庫:

  在VB中,對(duì)一個(gè)對(duì)象變量引用之前必須加以說明。DAO也是如此,必須先聲明數(shù)據(jù)庫變量,例如:Dim dbase As Database 。建立了數(shù)據(jù)庫對(duì)象變量后,我們便可打開數(shù)據(jù)庫了,在一般情況下都只是訪問一個(gè)數(shù)據(jù)庫,當(dāng)打開數(shù)據(jù)庫后再對(duì)數(shù)據(jù)庫中的各個(gè)記錄進(jìn)行操作,這就要用到Recordset 對(duì)象建立記錄集。例如:

Private Sub Command_OpenDatabase_Click()
Dim dbase as Database
Dim rs As Recordset
Set dbase = OpenDatabase ( App.path & "\數(shù)據(jù)庫名稱.mdb" )
Set rs = dbase.OpenRecordset ( " select * from 表名 " )
End Sub

   這樣,數(shù)據(jù)庫中的記錄便放到Recordset中,可以進(jìn)行后續(xù)操作了。

 

 

 

四、 使用數(shù)據(jù)庫:

  當(dāng)打開數(shù)據(jù)庫,建立Recordset 記錄集后,便可瀏覽、刪除、添加、查找數(shù)據(jù)庫中的內(nèi)容。

  1) 向前瀏覽

Private Sub cmd_previous_Click()
rs.MovePrevious
if rs.BOF =True then
rs.Movelast
End if
for i = 0 to 11
label(i).caption = rs.Fields(i) & ""
next
End Sub

  在字段賦值的末尾加上""可以避免許多不必要的錯(cuò)誤,在數(shù)據(jù)庫中,當(dāng)一個(gè)字段為空的時(shí)候,它的值為Null ,Null表示什么也沒有。因此無法賦值,賦給變量時(shí)會(huì)出錯(cuò)。但我們加上""空格符時(shí),便有效的避免了賦值錯(cuò)誤,這個(gè)技巧非常的有用。

  2) 向后瀏覽

Private Sub cmd_next_Click()
rs.MoveNext
If rs.EOF =True then
rs.MoveFirst
End if
for i = 0 to 11
label(i).caption = rs.Fields(i) & ""
next
End Sub
     3) 刪除記錄
Private Sub cmd_del_Click()
On Error GoTo handle
Dim msg as string
msg = "是否要?jiǎng)h除記錄"& Chr$(10)
msg = msg & label(0) ′把刪除記錄的代號(hào)加入msg中
If Msgbox(msg , 17 , "刪除記錄") <>1 Then Exit sub
rs.delete
rs.Movenext
If rs.EOF = True Then
rs.MovePrevious
End if
for i = 0 to 11
label(i).caption = rs.Fields(i) & ""
next
handle:
MsgBox "該記錄無法刪除!!!"
Exit Sub
End Sub

  4) 添加記錄

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

Private Sub cmd_new_Click()
rs.AddNew
For i = 0 to 11
rs.Fields(i) = TextBox(i).Text
Next
rs.Updata
End Sub

  5)查找記錄

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

Private Sub Cmd_search_Click()
Set rs = dbase.openRecordset("表名",dbopenDynaset)
rs.findfirst "字段名= ' " & Text.Text & " ' " ′ Text.Text是輸入的關(guān)鍵字
if rs.Nomatch = True then
Msgbox "對(duì)不起,沒有該記錄"
else
For i = 0 to 11
label(i).caption = rs.Fields(i) & ""
Next
End if
rs.close
End Sub

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


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    青草草在线视频免费视频| 日韩成人午夜福利免费视频| 国产午夜免费在线视频| 欧美日韩亚洲精品内裤| 免费一区二区三区少妇| 成人欧美一区二区三区视频| 最好看的人妻中文字幕| 99精品国产自在现线观看| 噜噜中文字幕一区二区| 久久三级国外久久久三级| 久久大香蕉精品在线观看| 国产日韩欧美综合视频| 日本加勒比在线观看一区| 国产免费自拍黄片免费看| 国产一区二区不卡在线视频| 蜜桃传媒在线正在播放| 欧美尤物在线观看西比尔| 亚洲最新中文字幕在线视频| 国产精品国三级国产专不卡| 久久碰国产一区二区三区| 精品日韩视频在线观看| 91精品视频免费播放| 国产丝袜女优一区二区三区| 91精品视频免费播放| 男女激情视频在线免费观看| 国产av一区二区三区四区五区| 色老汉在线视频免费亚欧| 在线中文字幕亚洲欧美一区| 久草热视频这里只有精品| 欧美av人人妻av人人爽蜜桃| 欧美激情一区二区亚洲专区| 久草视频在线视频在线观看| 欧洲日韩精品一区二区三区| 久久99青青精品免费| 成年人视频日本大香蕉久久| 婷婷激情五月天丁香社区| 久久精品亚洲欧美日韩| 亚洲国产成人久久一区二区三区| 最近日韩在线免费黄片| 麻豆一区二区三区在线免费| 久热在线视频这里只有精品|