vb神童教程續(xù)_數(shù)據(jù)庫(kù)操作_第1頁(yè)
vb神童教程續(xù)_數(shù)據(jù)庫(kù)操作_第2頁(yè)
vb神童教程續(xù)_數(shù)據(jù)庫(kù)操作_第3頁(yè)
vb神童教程續(xù)_數(shù)據(jù)庫(kù)操作_第4頁(yè)
vb神童教程續(xù)_數(shù)據(jù)庫(kù)操作_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄第一部分:vb數(shù)據(jù)庫(kù)操作實(shí)例 編寫(xiě)一個(gè)小型的信息管理系統(tǒng) 準(zhǔn)備數(shù)據(jù)庫(kù) 設(shè)計(jì)系統(tǒng)的界面及對(duì)象的屬性 form1的load事件代碼第二部分:補(bǔ)充內(nèi)容ODBC數(shù)據(jù)源簡(jiǎn)介 配置Access數(shù)據(jù)源 配置SQL Server數(shù)據(jù)源vb連接Access數(shù)據(jù)庫(kù)實(shí)例 使用ADO Data控件連接Access的簡(jiǎn)單實(shí)例 結(jié)尾vb神童教程(續(xù))-編寫(xiě)一個(gè)小型的信息管理系統(tǒng)受委托為編程入門(mén)網(wǎng)做一個(gè)簡(jiǎn)單的vb操作數(shù)據(jù)庫(kù)的實(shí)例,來(lái)演示一下如何用vb向數(shù)據(jù)庫(kù)中添加、修改、刪除記錄這些操作。我覺(jué)得自己是比較菜的,幾年來(lái)別人都在進(jìn)步,只有我還在原地踏步。不過(guò)沒(méi)有辦法,我們這一圈人里現(xiàn)在只有我機(jī)器上還有vb6,勉為其難,只有

2、嘗試一下了。如果我寫(xiě)的這點(diǎn)幼稚的東西能為想要了解vb數(shù)據(jù)庫(kù)操作的朋友提供哪怕是一丁點(diǎn)兒的參考和幫助,將是我最為高興的事情,同時(shí)也希望高手不要見(jiàn)笑。我做的這個(gè)實(shí)例名為“編程入門(mén)網(wǎng)網(wǎng)址管理系統(tǒng)”,算是一個(gè)小型的信息管理系統(tǒng)吧。該系統(tǒng)后臺(tái)使用的是Access數(shù)據(jù)庫(kù),程序中使用ADO代碼鏈接的形式連接Access。該系統(tǒng)具有向數(shù)據(jù)庫(kù)中添加、修改、刪除記錄的功能,進(jìn)行某項(xiàng)操作后能夠?qū)崟r(shí)刷新顯示數(shù)據(jù)。并在程序中加了相應(yīng)的代碼對(duì)輸入的數(shù)據(jù)進(jìn)行合法性校驗(yàn),以避免輸入錯(cuò)誤的數(shù)據(jù)造成程序運(yùn)行不正常,程序運(yùn)行時(shí)各個(gè)操作及退出系統(tǒng)時(shí)均有友好的提示框請(qǐng)用戶(hù)確認(rèn)。所有代碼均在Windows 2003+Vusual Bas

3、ic 6.0環(huán)境下調(diào)試通過(guò)。系統(tǒng)運(yùn)行時(shí)如下圖:目錄vb神童教程(續(xù))-準(zhǔn)備數(shù)據(jù)庫(kù)我用的是Access 2003,因?yàn)樾枰v解的僅僅是數(shù)據(jù)的添加、修改及刪除,因此單數(shù)據(jù)庫(kù)、單表就夠了。如果以后您要編寫(xiě)更復(fù)雜一些的信息管理系統(tǒng)而涉及到多表操作,則您還需要補(bǔ)充一些關(guān)系數(shù)據(jù)庫(kù)方面的知識(shí),比如實(shí)體、一對(duì)一聯(lián)系、一對(duì)多聯(lián)系等等;此外,對(duì)sql語(yǔ)言也需要有所了解。具體您可以參考:數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)ABC。首先,在“我的電腦”的e盤(pán)新建一個(gè)名為vb文件夾,先打開(kāi)Access,新建一個(gè)名為Access_db的數(shù)據(jù)庫(kù)(Access數(shù)據(jù)庫(kù)文件的擴(kuò)展名是.mdb),保存到剛才建立的文件夾中,則以后在程序中調(diào)用數(shù)據(jù)源的位置

4、為E:vbAccess_db.mdb。然后在Access_db.mdb中建立一個(gè)名為wzdz的表(wzdz是“網(wǎng)站地址”的首字母縮寫(xiě)), 然后在wzdz表中添加網(wǎng)站名稱(chēng)、網(wǎng)站地址及網(wǎng)站描述三個(gè)字段,三個(gè)字段的屬性是相同的,如下:數(shù)據(jù)類(lèi)型:文本。字段大?。?0有效性規(guī)則:無(wú)。必填字段:否允許空字符串:否索引:無(wú)“編號(hào)”這個(gè)字段使用的是Access的自動(dòng)編號(hào),并將其作為主鍵。也就是說(shuō),您在表中設(shè)置以上三個(gè)字段即可,設(shè)置完畢保存表時(shí),按Access的提示添加主鍵,Access會(huì)自動(dòng)為您搞定。具體操作您可以參考:vb神童教程(續(xù))-vb連接Access數(shù)據(jù)庫(kù)實(shí)例這樣在建立了數(shù)據(jù)庫(kù)及表結(jié)構(gòu)之后,即使是調(diào)

5、用沒(méi)有記錄的空庫(kù),系統(tǒng)也可以無(wú)差錯(cuò)運(yùn)行,可以在運(yùn)行時(shí)通過(guò)“添加記錄”按鈕向數(shù)據(jù)庫(kù)中添加記錄。不過(guò)由于數(shù)據(jù)庫(kù)是空的,系統(tǒng)第一次運(yùn)行時(shí)數(shù)據(jù)顯示控件沒(méi)有數(shù)據(jù)可顯示,顯得空蕩蕩的,不太美觀哦。為了方便起見(jiàn),我們?cè)贏ccess中給wzdz表中預(yù)先添加兩條初始記錄:添加的方法很簡(jiǎn)單:在Access的設(shè)計(jì)器中直接雙擊wzdz表名,在出來(lái)的窗口中添加即可。添加時(shí)注意:因?yàn)槲覀兪褂玫氖茿ccess的自動(dòng)編號(hào)做主鍵,所以在添加時(shí)不用理“編號(hào)”這個(gè)字段,直接添加后三個(gè)字段即可。 目錄vb神童教程(續(xù))-設(shè)計(jì)系統(tǒng)的界面及對(duì)象的屬性本系統(tǒng)是一個(gè)很簡(jiǎn)單的數(shù)據(jù)庫(kù)操作實(shí)例,能夠?qū)?shù)據(jù)庫(kù)的添加、修改及刪除記錄這幾個(gè)基本的操作。

6、系統(tǒng)使用數(shù)據(jù)顯示控件MSHFlexGrid顯示數(shù)據(jù)庫(kù)中的記錄,使用數(shù)據(jù)鏈接控件Adodc鏈接數(shù)據(jù)庫(kù)作為MSHFlexGrid的數(shù)據(jù)源,使用文本框來(lái)接收系統(tǒng)運(yùn)行時(shí)用戶(hù)輸入的數(shù)據(jù)。步驟如下:一、啟動(dòng)vb6,新建一個(gè)標(biāo)準(zhǔn)exe工程,并將工程中的form1的caption屬性設(shè)置為“編程入門(mén)網(wǎng)網(wǎng)址管理系統(tǒng)”,width屬性值設(shè)為7950,height屬性值設(shè)為4620。二、向窗體中添加一個(gè)Adodc控件。如果在工具箱中找不到Adodc控件,可以右擊工具箱,選擇“部件.”菜單項(xiàng),然后在“部件”窗口的“控件”選項(xiàng)卡中選中“Microsoft ADO Data Control6.0(OLEDB)”。在VB的

7、屬性窗口我們對(duì)Adodc控件的三個(gè)個(gè)屬性值進(jìn)行編輯,其余屬性值使用默認(rèn)的即可:1、ConnectionString屬性值設(shè)為:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:vbAccess_db.mdb;Persist Security Info=False 這個(gè)屬性設(shè)置了連接Access_db.mdb這個(gè)數(shù)據(jù)庫(kù)。2、RecordSourc屬性值設(shè)為:select * from wzdz這個(gè)屬性值中的sql語(yǔ)句的作用是查詢(xún)出wzdz表中的所有記錄。3、Visible屬性值設(shè)為False,作用是使其在運(yùn)行時(shí)不可見(jiàn)。三、向窗體添加一個(gè)MSHFlexG

8、rid控件,如果工具箱中沒(méi)有MSHFlexGrid控件,可以右擊工具箱,選擇“部件.”菜單項(xiàng),然后在“部件”窗口的“控件”選項(xiàng)卡中選中“Microsoft Hierarchical FlexGrid Control 6.0 ”。然后在vb的屬性窗口中將MSHFlexGrid控件的名稱(chēng)修改為MS1,如下圖:然后對(duì)MSHFlexGrid控件進(jìn)行如下設(shè)置:1、DataSource屬性:在vb的屬性窗口中將其值設(shè)為Adodc1,即使用Adodc控件作為其數(shù)據(jù)源。2、BackColorBkg屬性:在vb的屬性窗口中將其值設(shè)為&H00FFE0E0&,這是設(shè)置的MSHFlexGrid控件的底

9、色。3、BackColorFixed屬性:在vb的屬性窗口中將其值設(shè)為&H00C0FFFF&,這是設(shè)置的MSHFlexGrid控件的顯示標(biāo)題的底色。4、width屬性:在vb的屬性窗口中將其值設(shè)為7695.5、Height屬性:在vb的屬性窗口中將其值設(shè)為2175.6、右擊MSHFlexGrid控件,在彈出的菜單中選“屬性”,在彈出的“屬性頁(yè)”對(duì)話框的在“通用”選項(xiàng)卡中修改行為4,修改列為4,修改固定行為0,修改固定列為0。如果數(shù)據(jù)鏈接正常,在“屬性頁(yè)”對(duì)話框的“帶區(qū)”選項(xiàng)卡中可以看到列標(biāo)題和列名稱(chēng)已經(jīng)設(shè)置了,這里注意應(yīng)該將“帶區(qū)”選項(xiàng)卡中的“列標(biāo)頭”選項(xiàng)勾選上,否則運(yùn)行時(shí)無(wú)法

10、顯示列標(biāo)題,如下圖。“屬性頁(yè)”對(duì)話框的其它部分使用默認(rèn)值即可。四、向窗體中添加4個(gè)Label控件(標(biāo)簽),在vb的屬性窗口為它們?cè)O(shè)置以下屬性:1、caption屬性:分別設(shè)置為網(wǎng)站名稱(chēng)、網(wǎng)站地址、網(wǎng)站描述及編號(hào)。2、Alignment屬性:均設(shè)為“2-Center”。3、AutoSize屬性:均設(shè)為T(mén)rue。五、向窗體中添加4個(gè)TextBox控件(文本框),并調(diào)整它們的位置成一排與4個(gè)標(biāo)簽相對(duì)應(yīng),即:網(wǎng)站名稱(chēng)Text1,網(wǎng)站地址Text2,網(wǎng)站描述Text3,編號(hào)Text4。六、向窗體中添加4個(gè)CommandButton控件(命令按鈕),將它們的caption屬性分別設(shè)置為“添加記錄”、“修改

11、記錄”、“刪除記錄”和“退出系統(tǒng)”,并調(diào)整它們的位置成一排,放在文本框的下方。七、在兩排文本框和命令按鈕中間,添加一個(gè)Line控件,適當(dāng)拖動(dòng)其兩端的控制點(diǎn)將長(zhǎng)短調(diào)整至適當(dāng),并將其BorderColor屬性性設(shè)為&H00C00000&,作用是把文本框和命令按鈕隔開(kāi),這樣在視覺(jué)上似乎能好看些。八、所有控件設(shè)置完畢后,界面如下圖所示:下一步的工作,是為對(duì)象添加事件代碼。目錄一、form1的load事件代碼:Private Sub Form_Load()Form1.MS1.ColWidth(0) = 600Form1.MS1.ColWidth(1) = 1000Form1.MS1.Co

12、lWidth(2) = 2300Form1.MS1.ColWidth(3) = 4000Form1.Text1.Text = ""Form1.Text2.Text = ""Form1.Text3.Text = ""Form1.Text4.Text = ""End Sub主要是在系統(tǒng)初始化時(shí)設(shè)置MSHFlexGrid控件的列寬,并將文本框置空。二、“添加記錄”按鈕(command1)的click事件代碼:Private Sub Command1_Click()Dim sc As IntegerIf Text1.Tex

13、t = "" Or Text2.Text = "" Or Text3.Text = "" Then'即網(wǎng)站名稱(chēng)、網(wǎng)站地址和網(wǎng)站描述的內(nèi)容必須填全了才打開(kāi)數(shù)據(jù)庫(kù)連接寫(xiě)入數(shù)據(jù) '由于系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)為“編號(hào)”字段采用的是Access的自動(dòng)編號(hào)'因此在添加記錄時(shí)不接收編號(hào)的數(shù)據(jù),由Access自動(dòng)加編號(hào)MsgBox ("請(qǐng)輸入完整的網(wǎng)站信息")Elsesc = MsgBox("確實(shí)要添加這條記錄嗎?", vbOKCancel, "提示信息")If sc = 1

14、 Then'運(yùn)行時(shí)如果用戶(hù)點(diǎn)擊的是MsgBox提示框的“確定”按鈕,返回值是1Dim Str1 As StringDim Str2 As StringDim Str3 As StringStr1 = "Provider=Microsoft.Jet.OLEDB.4.0;"Str2 = "Data Source=E:vbAccess_db.mdb;"Str3 = "Jet OLEDB:Database Password="conn.Open Str1 & Str2 & Str3strSQL = "sele

15、ct * from wzdz"rs.Open strSQL, conn, 3, 3MsgBox ("添加記錄成功!")'刷新數(shù)據(jù)源,MSHFlexGrid控件會(huì)實(shí)時(shí)刷新顯示數(shù)據(jù)End If'以下四條語(yǔ)句的作用是在操作完成后將文本框置空Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""End IfEnd Sub三、“修改記錄”按鈕(command2)的click事件代碼:Private Sub Comm

16、and2_Click()If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then'編號(hào)字段是Access的自動(dòng)編號(hào),為自然數(shù)'因此對(duì)text4的內(nèi)容進(jìn)行校驗(yàn),如果不是數(shù)值或?yàn)?則跳出sub過(guò)程MsgBox "記錄號(hào)是大于0的自然數(shù),請(qǐng)輸入正確的編號(hào)!"Exit SubEnd IfIf Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then'對(duì)三個(gè)文本框的內(nèi)容進(jìn)行校驗(yàn),不接收空

17、值MsgBox "請(qǐng)輸入完整的網(wǎng)站信息!"Exit SubEnd IfDim sc As Integersc = MsgBox("確實(shí)修改這條記錄嗎?", vbOKCancel, "提示信息")If sc = 1 Then'運(yùn)行時(shí)如果用戶(hù)點(diǎn)擊的是MsgBox提示框的“確定”按鈕,返回值是1Dim Str1 As StringDim Str2 As StringDim Str3 As StringStr1 = "Provider=Microsoft.Jet.OLEDB.4.0;"Str2 = "Da

18、ta Source=E:vbAccess_db.mdb;"Str3 = "Jet OLEDB:Database Password="conn.Open Str1 & Str2 & Str3strSQL = "select * from wzdz where 編號(hào)=" & Val(Text4.Text) & ""rs.Open strSQL, conn, 3, 3If rs!編號(hào) = Val(Text4.Text) Then'由于系統(tǒng)數(shù)據(jù)庫(kù)使用的是自動(dòng)編號(hào)作為主鍵'因此以編號(hào)字段

19、的內(nèi)容作為判斷的依據(jù)'如果rs!編號(hào) = Val(Text4.Text)說(shuō)明數(shù)據(jù)庫(kù)中有此記錄,'才會(huì)修改其它三個(gè)字段的內(nèi)容'否則給出“不存在此記錄”的提示信息并關(guān)閉數(shù)據(jù)連接MsgBox ("修改記錄成功!")Adodc1.Refresh '刷新數(shù)據(jù)源,MSHFlexGrid控件會(huì)實(shí)時(shí)刷新顯示數(shù)據(jù)ElseMsgBox ("不存在此記錄!")Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = "

20、"Exit SubEnd IfEnd If'以下四條語(yǔ)句的作用是在操作完成后將文本框置空Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""End Sub四、“刪除記錄”按鈕(command3)的click事件代碼:Private Sub Command3_Click()If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then'編號(hào)字段是Access的自動(dòng)編號(hào),為自然

21、數(shù)'因此對(duì)text4的內(nèi)容進(jìn)行校驗(yàn),如果不是數(shù)值或?yàn)?則跳出sub過(guò)程 MsgBox "編號(hào)是大于0的自然數(shù),請(qǐng)輸入正確的編號(hào)!"Exit SubEnd IfDim sc As Integersc = MsgBox("確實(shí)要?jiǎng)h除這個(gè)記錄嗎?", vbOKCancel, "刪除確認(rèn)!")If sc = 1 Then'運(yùn)行時(shí)如果用戶(hù)點(diǎn)擊的是MsgBox提示框的“確定”按鈕,返回值是1Dim Str1 As StringDim Str2 As StringDim Str3 As StringStr1 = "Prov

22、ider=Microsoft.Jet.OLEDB.4.0;"Str2 = "Data Source=E:vbAccess_db.mdb;"Str3 = "Jet OLEDB:Database Password="conn.Open Str1 & Str2 & Str3strSQL = "select * from wzdz where 編號(hào)=" & Val(Text4.Text) & ""rs.Open strSQL, conn, 3, 3If rs!編號(hào) = Val(Te

23、xt4.Text) Then'由于系統(tǒng)數(shù)據(jù)庫(kù)使用的是自動(dòng)編號(hào)作為主鍵'因此以編號(hào)字段的內(nèi)容作為判斷的依據(jù)'如果rs!編號(hào) = Val(Text4.Text)說(shuō)明數(shù)據(jù)庫(kù)中有此記錄并進(jìn)行刪除操作'否則給“不存在此記錄”的提示信息并關(guān)閉數(shù)據(jù)連接MsgBox ("刪除記錄成功!")Adodc1.Refresh '刷新數(shù)據(jù)源,MSHFlexGrid控件會(huì)實(shí)時(shí)刷新顯示數(shù)據(jù)ElseMsgBox ("不存在此記錄!")Text4.Text = ""Exit SubEnd IfEnd If'以下四條語(yǔ)句的

24、作用是在操作完成后將文本框置空Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""End Sub五、“退出系統(tǒng)”按鈕(command4)的click事件代碼:Private Sub Command4_Click()Dim sc As Integersc = MsgBox("確實(shí)要退出系統(tǒng)嗎?", vbOKCancel, "提示信息")If sc = 1 Then'運(yùn)行時(shí)如果用戶(hù)點(diǎn)擊的是MsgBox提示

25、框的“確定”按鈕,返回值是1EndEnd IfEnd Sub六、添加完事件代碼之后,我們這個(gè)實(shí)例至此完成,運(yùn)行一下吧!目錄vb神童教程(續(xù))-ODBC數(shù)據(jù)源簡(jiǎn)介ODBC(開(kāi)放式數(shù)據(jù)庫(kù)連接)是一種應(yīng)用程序的接口(API)。這種接口提供了獨(dú)立于任何的數(shù)據(jù)管理系統(tǒng)編寫(xiě)應(yīng)用程序的能力。OCBC通過(guò)ODBC驅(qū)動(dòng)程序提供了對(duì)不同的數(shù)據(jù)庫(kù)供應(yīng)商的一組應(yīng)用程序接口來(lái)給特殊的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。用戶(hù)的應(yīng)用程序使用這組API來(lái)調(diào)度ODBC驅(qū)動(dòng)程序。然后驅(qū)動(dòng)程序通過(guò)SQL語(yǔ)句同DBMS發(fā)生聯(lián)系。下面我們開(kāi)始介紹ODBC數(shù)據(jù)源。在“我的電腦”中打開(kāi)“控制面板”中的“管理工具”,在窗口中即可見(jiàn)ODBC數(shù)據(jù)源圖標(biāo)

26、。雙擊打開(kāi)ODBC數(shù)據(jù)源管理器,如下圖所示:ODBC數(shù)據(jù)源管理器為配置、添加、刪除各種不同的數(shù)據(jù)源名稱(chēng)提供了最為簡(jiǎn)潔的方法。它使得用戶(hù)可以輕松地完成數(shù)據(jù)源的配置工作,用戶(hù)也可以刪除原有的DSN(數(shù)據(jù)源名稱(chēng)),或?qū)ο惹芭渲玫臄?shù)據(jù)源進(jìn)行修改。ODBC數(shù)據(jù)源管理器的具體功能如下:用戶(hù)DSN:ODBC用戶(hù)數(shù)據(jù)源存儲(chǔ)了如何與指定數(shù)據(jù)提供者連接的信息。用戶(hù)數(shù)據(jù)源只對(duì)當(dāng)前的用戶(hù)可見(jiàn),而且只能應(yīng)用在本機(jī)上。系統(tǒng)DSN:ODBC系統(tǒng)數(shù)據(jù)源存儲(chǔ)了如何與指定數(shù)據(jù)提供者連接的信息。系統(tǒng)數(shù)據(jù)源對(duì)當(dāng)前機(jī)器上的所有用戶(hù)可見(jiàn)。文件DSN:ODBC文件數(shù)據(jù)源允許用戶(hù)連接數(shù)據(jù)提供者。文件DSN可以由安裝了相同驅(qū)動(dòng)程序的用戶(hù)共享。

27、驅(qū)動(dòng)程序:ODBC驅(qū)動(dòng)程序允許那些支持ODBC的程序通過(guò)ODBC數(shù)據(jù)源獲取信息。如果安裝新的驅(qū)動(dòng)程序,要使用其安裝程序。跟蹤:ODBC跟蹤允許創(chuàng)建調(diào)用ODBC驅(qū)動(dòng)程序的日志,以供技術(shù)人員查看;也可以輔助調(diào)試應(yīng)用程序。Visual Studio跟蹤啟動(dòng)Microsoft Visual Studio的ODBC跟蹤。連接池:連接池允許應(yīng)用程序重新打開(kāi)連接句柄,此操作將往返過(guò)程存入服務(wù)器。目錄vb神童教程(續(xù))-配置Access數(shù)據(jù)源(1)打開(kāi)控制面板中的ODBC數(shù)據(jù)源管理器,在“用戶(hù)DSN”(即“用戶(hù)數(shù)據(jù)源”)中選擇“MS Access Database”選項(xiàng),可心刪除或配置一個(gè)已有的用戶(hù)數(shù)據(jù),這里

28、我們將要添加一個(gè)數(shù)據(jù)源。(2)單擊添加按鈕,系統(tǒng)將準(zhǔn)備在MS Access Database下添加一個(gè)用戶(hù)數(shù)據(jù)源,為了安裝數(shù)據(jù)源,會(huì)彈出創(chuàng)建新數(shù)據(jù)源窗口,如下圖:(3)在創(chuàng)建新數(shù)據(jù)源窗口中,選擇"Microsoft Access Driver"來(lái)安裝數(shù)據(jù)源。(4)單擊“完成”按鈕,進(jìn)入ODBC Microsoft Access安裝窗口,如下圖:在“數(shù)據(jù)源名”項(xiàng)中鍵入數(shù)據(jù)源的名稱(chēng),這里我們鍵入“Access_db”作為數(shù)據(jù)源名。 在“描述”項(xiàng)中鍵入對(duì)數(shù)據(jù)源的描述,此處內(nèi)容可選,這里我們鍵入“This is Access database temp”。在“數(shù)據(jù)庫(kù)”項(xiàng)中可以選取、

29、創(chuàng)建、修復(fù)或者壓縮數(shù)據(jù)庫(kù)。這里我們選擇“選取”按鈕來(lái)選取相應(yīng)的Access數(shù)據(jù)庫(kù)。如果用戶(hù)沒(méi)有自己建立的Access數(shù)據(jù)庫(kù),那么用戶(hù)可以到安裝Access的目錄下面選取Access自帶的數(shù)據(jù)庫(kù)。注意:Access數(shù)據(jù)庫(kù)文件的擴(kuò)展名是.mdb。 最后,單擊“確定”按鈕。至此一個(gè)新的Access數(shù)據(jù)源已經(jīng)添加完成,如下圖:說(shuō)明:如果用戶(hù)希望所創(chuàng)建的數(shù)據(jù)源名被本機(jī)中的多個(gè)用戶(hù)所使用,請(qǐng)用戶(hù)添加系統(tǒng)DSN。在實(shí)際情況中,開(kāi)發(fā)一個(gè)單機(jī)單用戶(hù)的系統(tǒng)沒(méi)有什么意義,所以一般都需要對(duì)系統(tǒng)DSN進(jìn)行配置。系統(tǒng)DSN的添加過(guò)程同用戶(hù)DSN添加過(guò)程類(lèi)似。目錄配置SQL Server數(shù)據(jù)源配置SQL Server數(shù)據(jù)源

30、的步驟:(1) 打開(kāi)控制面板中的ODBC數(shù)據(jù)源管理器,單擊“添加”按鈕來(lái)添加一個(gè)數(shù)據(jù)源。(2)單擊添加按鈕后,系統(tǒng)將準(zhǔn)備添加一個(gè)用戶(hù)數(shù)據(jù)源。為了安裝數(shù)據(jù)源,會(huì)彈出創(chuàng)建新數(shù)據(jù)源窗口,如下圖所示。由于VB和SQL Server的系列性,所以即使用戶(hù)沒(méi)有安裝SQL Server,在創(chuàng)建新數(shù)據(jù)源窗口中也列有SQL Server這一項(xiàng)。當(dāng)然,這里的列表項(xiàng)只是起了一個(gè)標(biāo)識(shí)作用,如果用戶(hù)尚未安裝SQL Server,請(qǐng)先安裝后再進(jìn)行以下的步驟。(3)在上圖選擇“SQL Server”后,單擊“完成”按鈕,進(jìn)入“創(chuàng)建新的數(shù)據(jù)源到SQL Server”窗口,如下圖所示:在“名稱(chēng)”項(xiàng)中鍵入新的數(shù)據(jù)源名,這里我們鍵

31、入SQL Server1作為新數(shù)據(jù)源名稱(chēng)。 在“描述”項(xiàng)中鍵入對(duì)數(shù)據(jù)源的描述,此處可以不填。在“服務(wù)器”項(xiàng)中鍵入想連接的SQL Server服務(wù)器。如果要連接的SQL Server是安裝在本機(jī)上,那么就從下拉框中選擇“Local”,local表示的是連接到本地的服務(wù)器。如果要連接的SQL Server是安裝在其它的服務(wù)器上,那么就應(yīng)從下拉框中選取相應(yīng)的選項(xiàng)。如果從列表中選擇服務(wù)器名稱(chēng),則不需要更多的配置。如果輸入一個(gè)不存在的服務(wù)器的名字作為SQL Client Configuration Utility中的一項(xiàng),可在向?qū)У南乱粋€(gè)屏幕上為新名字創(chuàng)建一個(gè)服務(wù)器別名。 單擊“完成”按鈕完成新數(shù)據(jù)源的

32、配置。單擊“下一步”按鈕進(jìn)行下一步的配置工作。 在“SQL Server”應(yīng)該如何驗(yàn)證登錄標(biāo)識(shí)號(hào)的真?zhèn)??”下面有兩個(gè)單選項(xiàng)供用戶(hù)選擇。 如果選定“使用用戶(hù)輸入登錄標(biāo)識(shí)號(hào)和密碼的SQL Server驗(yàn)證”,請(qǐng)指定連接到SQL Server時(shí)SQL Server驅(qū)動(dòng)程序使用的登錄標(biāo)識(shí)號(hào)。這僅適用于確定服務(wù)器默認(rèn)配置的連接,而不適用于使用已創(chuàng)建數(shù)據(jù)源進(jìn)行的后續(xù)連接。如果選定“使用用戶(hù)輸入登錄標(biāo)識(shí)號(hào)和密碼的SQL Server驗(yàn)證“,請(qǐng)指定連接到SQL Server時(shí)SQL Server使用的密碼。這只適用于確定服務(wù)器默認(rèn)配置的連接,而不適用于使用新數(shù)據(jù)源進(jìn)行的后續(xù)連接。(5)單擊“下一步”按鈕將進(jìn)行

33、連接的驗(yàn)證。如果正確,則連接成功;否則,系統(tǒng)會(huì)指出具體的錯(cuò)誤,用戶(hù)應(yīng)該重新驗(yàn)證輸入的正確性。目錄VB的ADO對(duì)象ADO簡(jiǎn)介參考資料:ADO是另一種用于開(kāi)發(fā)訪問(wèn)OLE DB數(shù)據(jù)源應(yīng)用程序的API。有多種程序設(shè)計(jì)語(yǔ)言都支持ADO,如VB,VC+,VJ+等。ADO提供了較為高級(jí)并容易被理解的訪問(wèn)OLE DB數(shù)據(jù)源的機(jī)制,它結(jié)合了DAO和RDO的優(yōu)點(diǎn)。并提供了OLE DB數(shù)據(jù)源的入口。OLE DB是一種數(shù)據(jù)庫(kù)體系結(jié)構(gòu),它為企業(yè)網(wǎng)絡(luò)提供了普遍的數(shù)據(jù)綜合能力(從大型機(jī)到桌面上的數(shù)據(jù),而不管數(shù)據(jù)的具體類(lèi)型是什么),與ODBC相比,OLE DB在數(shù)據(jù)通道方面更具有普遍性和有效性,這是因?yàn)樗试S同建立在COM基

34、礎(chǔ)上的更多的數(shù)據(jù)類(lèi)型聯(lián)系和由于ADO是為開(kāi)發(fā)客戶(hù)機(jī)/服務(wù)器程序而專(zhuān)門(mén)設(shè)計(jì)的。下圖是典型的ADO應(yīng)用程序的結(jié)構(gòu)。ADO的特征如下:支持成批更新.即對(duì)更新的多個(gè)記錄進(jìn)行緩沖,并同步傳輸?shù)椒?wù)器。支持所有類(lèi)型的光標(biāo)。包括只能前移型,關(guān)鍵值型以及動(dòng)態(tài)和靜態(tài)型。支持服務(wù)器端的存儲(chǔ)過(guò)程。這些過(guò)程可以大大提高應(yīng)用程序的通用性。支持返回多個(gè)記錄集的查詢(xún)。支持查詢(xún)目的。包括限制返回的記錄的個(gè)數(shù),激活返回記錄的過(guò)濾和預(yù)先語(yǔ)句。ADO是由以下對(duì)象組成的:Command,Connect,Error,Field,Parameter和RecordSet。下圖給出了ADO對(duì)象的層次結(jié)構(gòu)。除了Error和Field之外的所有

35、ADO對(duì)象都是可以單獨(dú)創(chuàng)建的,而Command,Error和Parameter對(duì)象是可選的。目錄adodb Connection對(duì)象簡(jiǎn)介Connection對(duì)象介紹Connection對(duì)象支持許多屬性,可以利用這些屬性來(lái)操作當(dāng)前的連接狀態(tài)或者獲取一些基本的Connection對(duì)象的信息.有一些屬性是只讀的,而另一些屬性是可讀寫(xiě)的.Attributes屬性設(shè)置或返回一個(gè)整型值,它用來(lái)指示對(duì)象的一項(xiàng)或多項(xiàng)特性.對(duì)于Connection對(duì)象,Attributes屬性為讀/寫(xiě),并且其值可能為以下任意一個(gè)或多個(gè)XactAttributeEnum值的和(默認(rèn)為零).AdXactCommitRetainin

36、g:執(zhí)行保留的提交,即通過(guò)自動(dòng)調(diào)用CommitTrans啟動(dòng)新事務(wù)。并非所有提供者都支持該常量。AdXactAbortRetaining:執(zhí)行保留的中上,即通過(guò)自動(dòng)調(diào)用RollbackTrans啟動(dòng)新事務(wù)。并非所有提供者都支持該常量。CommandTimeout屬性設(shè)置或返回長(zhǎng)整型值,該值指示等待命令執(zhí)行的時(shí)間(單位為秒)。默許值為30,指示在終止嘗試和產(chǎn)生錯(cuò)誤之前執(zhí)行命令期間需要等待的時(shí)間。使用Connection對(duì)象或Command上的CommandTimeout屬性,允許由于網(wǎng)絡(luò)擁塞或服務(wù)器負(fù)載過(guò)重產(chǎn)生的延遲而取消Execute方法調(diào)用。如果在CommandTimeout屬性中設(shè)置的時(shí)間

37、間隔內(nèi)沒(méi)有完成命令執(zhí)行,將產(chǎn)生錯(cuò)誤,然后ADO將取消該命令。如果將該屬性設(shè)置為零,ADO將無(wú)限期等待直到命令執(zhí)行完畢。ConnectionString屬性設(shè)置或返回字符串值,這個(gè)字符串值包含用來(lái)建立到數(shù)據(jù)源的連接的信息.使用ConnectionString屬性,通過(guò)傳遞包含一系列由分號(hào)分隔的argument=value語(yǔ)句的詳細(xì)連接字符串可指定數(shù)據(jù)源。ADO支持ConnectionString屬性的四個(gè)參數(shù),任何其他參數(shù)將直接傳遞到提供者而不經(jīng)過(guò)ADO處理。Provider參數(shù):指定用來(lái)連接的提供者名稱(chēng)。File Name參數(shù):指定包含預(yù)先設(shè)置連接信息的特定提供者的文件名稱(chēng)。Remote Pr

38、ovider參數(shù):指定打開(kāi)客戶(hù)端連接時(shí)使用的提供者名稱(chēng)。Remote Server參數(shù):指定打開(kāi)客戶(hù)端連接時(shí)使用的服務(wù)器的路徑名稱(chēng)。例:使用Connection對(duì)象的ConnectionString屬性的示例代碼Public Sub ConnectionString_Example()'不使用數(shù)據(jù)源名(DSN)打開(kāi)連接connection1.ConnectionString="driver=SQL Server;"&_"server=Myserver;uid=sa;pwd=password;database=pubs"connection

39、1.ConnectionTimeout=30'使用DSN和ODBC標(biāo)記打開(kāi)連接。connection2.ConnectionString="DSN=Pubs;UID=sa;PWD=password;"'使用DSN和OLE DB標(biāo)記打開(kāi)連接。connection3.ConnectionString="Data Source=Pubs;User ID=sa;Password=password;"'使用DSN和單個(gè)參數(shù)而非連接字符串打開(kāi)連接。connection4.Open "Pubs","sa"

40、,"pwd"End Sub注意:如果沒(méi)有復(fù)選“引用”對(duì)話框中的Data Access Object,程序會(huì)出錯(cuò)。在上面的程序段中,先定義了4個(gè)Connection對(duì)象的變量。這4個(gè)變量分別對(duì)應(yīng)于4種不同的連接方式。語(yǔ)句Set connection1=New ADODB.Connection是創(chuàng)建一個(gè)新的Connection對(duì)象,然后再調(diào)用Connection對(duì)象的Open方法來(lái)打開(kāi)數(shù)據(jù)庫(kù)連接。ConnectionTimeout屬性設(shè)置或返回指示等待連接打開(kāi)的時(shí)間的長(zhǎng)整型值(單位為秒)。其默認(rèn)值為15,指示在終止嘗試和產(chǎn)生錯(cuò)誤前建立連接期間所等待的時(shí)間。如果由于網(wǎng)絡(luò)擁塞或服務(wù)

41、器負(fù)載過(guò)重導(dǎo)致的延遲使得必須放棄連接嘗試時(shí),請(qǐng)使用Connection對(duì)象的ConnectionTimeout屬性。如果打開(kāi)連接前所經(jīng)過(guò)的時(shí)間超過(guò)ConnectionTimeout屬性上設(shè)置的時(shí)間,將產(chǎn)生錯(cuò)誤并且ADO將取消該嘗試。如果將該屬性設(shè)置為零,ADO將無(wú)限等待直到連接打開(kāi)。DefaultDatabase屬性可設(shè)置或返回指定Connection對(duì)象上默認(rèn)數(shù)據(jù)庫(kù)的名稱(chēng)。例:使用Connection對(duì)象的DefaultDababase屬性的示例代碼。Public Sub DefaultDatabase_Example()connection1.ConnectionString="

42、driver=SQL Server;"&_"server=Myserver;uid=sa;pwd=password"cnn1.DefaultDatabase="pubs"End SubIsolationLevel屬性指出Connection對(duì)象如何處理對(duì)象。Mode屬性設(shè)置或返回以下某個(gè)ConnectModeEnum的值,指示用于更改在Connection中的數(shù)據(jù)的可用權(quán)限。AdModeUnknown:默認(rèn)值。表明權(quán)限尚未設(shè)置或無(wú)法確定。AdModeRead:表明權(quán)限為只讀。AdModeWrite:表明權(quán)限為只寫(xiě)。AdModeReadW

43、rite:表明權(quán)限為讀/寫(xiě)。AdModeShareDenyRead:防止其他用戶(hù)使用讀權(quán)限打開(kāi)連接。AdModeShareDenyWrite:防止其他用戶(hù)使用寫(xiě)權(quán)限打開(kāi)連接。AdModeShareExclusive:防止其他用戶(hù)打開(kāi)連接。AdModeShareDenyNone:防止其他用戶(hù)使用任何權(quán)限打開(kāi)連接。Provider屬性指出當(dāng)前數(shù)據(jù)提供者的名字,或者是使用Open()方法時(shí)沒(méi)有指定名字的情況下所使用的提供者名。但是,調(diào)用Open方法時(shí)如果在多處指定提供者可能會(huì)產(chǎn)生無(wú)法預(yù)料的后果。如果沒(méi)有指定提供者,該屬性將默認(rèn)為MSDASQL(Microsoft OLE DB Provider fo

44、r ODBC)。例:使用Connection對(duì)象的Provider屬性的示例代碼。Public Sub Provider_Example()connection1.Provider="Microsoft.Jet.OLEDB.3.51"connection1.Open"C:samplesnorthwind.mdb","admin",""End SubState屬性對(duì)所有可應(yīng)用對(duì)象都可用,它用來(lái)說(shuō)明其對(duì)象狀態(tài)是打開(kāi)或關(guān)閉的??梢噪S時(shí)使用State屬性來(lái)確定指定對(duì)象的當(dāng)前狀態(tài)。該屬性是只讀的,并返回下列常量之一的長(zhǎng)整型值

45、。AdStateClosed:默認(rèn)值,指示對(duì)象是關(guān)閉的。AdStateOpen:指示對(duì)象是打開(kāi)的。AdStateConnecting:指示Recordset對(duì)象正在連接。AdStateExecuting:指示Recordset對(duì)象正在執(zhí)行命令。AdStateFetching:指示Recordset對(duì)象的行正在被讀取。例:使用Connection對(duì)象的State屬性的示例代碼。Public Sub State_Example()Dim statestring AS Stringconnection1.ConnectionString="DSN=Pubs;UID=sa;PWD=passw

46、ord;"case adStateClosedstatestring="adStateClosed"case adStateOpenstatestring="adStateOpen"End Select'顯示連接的狀態(tài)。MsgBox "connection1.State:",statestringEnd Sub目錄vb連接Access數(shù)據(jù)庫(kù)實(shí)例下面我們給出一個(gè)連接到Access數(shù)據(jù)庫(kù)的實(shí)例,此例中用到的數(shù)據(jù)庫(kù)為Access 2003。首先在e盤(pán)建立一個(gè)名為vb的文件夾,然后打開(kāi)Access 2003,單擊“文件”“新

47、建”,在右側(cè)出現(xiàn)的任務(wù)窗格中單擊“空數(shù)據(jù)庫(kù)”,在出現(xiàn)的對(duì)話框中,我們?cè)?quot;文件名"項(xiàng)后輸入給新數(shù)據(jù)庫(kù)起的名稱(chēng)并選擇保存位置,這里我們?yōu)樾聰?shù)據(jù)庫(kù)命名為Access_db并保存到我們剛才建立的文件夾中,如下圖,單擊"創(chuàng)建"按鈕后,系統(tǒng)就生成了一個(gè)新的Access空數(shù)據(jù)庫(kù)。在空數(shù)據(jù)庫(kù)中,還沒(méi)有任何用戶(hù)所創(chuàng)建的表,接下來(lái)我們就要使用設(shè)計(jì)器(如下圖)為Access_db數(shù)據(jù)庫(kù)建立表。首先我們?yōu)锳ccess_db創(chuàng)建一個(gè)名為“wzdz”的表,該表由以下4個(gè)字段組成:(1)編號(hào):此為Access自動(dòng)添加的主鍵字段,我們直接拿來(lái)使用。我們可直接設(shè)置后三個(gè)字段,在輸入完了w

48、zdz表的各個(gè)字段之后,此時(shí)關(guān)閉表設(shè)計(jì)器,Access會(huì)提示是否要進(jìn)行保存表,選擇“是”,然后為表起名為“wzdz”。因?yàn)闆](méi)有定義主鍵(primary Key),Access會(huì)提示為表加上一個(gè)主鍵,按提示將編號(hào)設(shè)置為主鍵即可。(2)后三個(gè)字段分別為網(wǎng)站名稱(chēng)、網(wǎng)站地址和網(wǎng)站描述,三個(gè)字段的屬性是相同的,如下: 數(shù)據(jù)類(lèi)型:文本。字段大?。?0有效性規(guī)則:無(wú)。必填字段:否允許空字符串:否索引:無(wú)設(shè)置完以上字段后,再重新在設(shè)計(jì)視圖中打開(kāi)wzdz表(方法:在設(shè)計(jì)器中右擊wzdz表名,選“設(shè)計(jì)視圖”命令),應(yīng)如下圖所示:有了數(shù)據(jù)庫(kù)和表之后,如果想讓VB應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù),還需進(jìn)行數(shù)據(jù)源的配置。只有在配置完

49、成了數(shù)據(jù)源之后,才能讓VB應(yīng)用程序同數(shù)據(jù)庫(kù)進(jìn)行正確的連接工作,在VB應(yīng)用程序中才可以通過(guò)ADO對(duì)象來(lái)進(jìn)行具體數(shù)據(jù)的操作,如果在建立了數(shù)據(jù)庫(kù)之后沒(méi)有對(duì)數(shù)據(jù)源進(jìn)行配置或者對(duì)數(shù)據(jù)源的配置工作出現(xiàn)錯(cuò)誤,則在此之前所做的一切工作都是白費(fèi)的。 我們按上一章所述的步驟進(jìn)行ODBC數(shù)據(jù)源的配置,建立一個(gè)名為Access_db的用戶(hù)DSN,接下來(lái)我們使用VB去具體地連接到Access_db數(shù)據(jù)庫(kù)。首先打開(kāi)VB,新建一個(gè)標(biāo)準(zhǔn)exe工程,在工程的form1中我們輸入如下的代碼: Private Sub Form_Load()Dim connect_string As StringDim statestring As

50、 String'連接Access數(shù)據(jù)庫(kù)connect_string="DSN=Access_db;UID=;PSW="cnn.Open connect_stringCase adStateClosestatestring="adStateClosed"Case adStateOpenstatestring="adStateOpen"End Select'顯示連接的狀態(tài)MsgBox "連接成功!",statestring'對(duì)wzdz表進(jìn)行查詢(xún)操作my_recordset.Open "

51、Select * from wzdz",cnnEnd Sub本段連接數(shù)據(jù)庫(kù)的代碼是寫(xiě)在窗體的Form_Load()子過(guò)程中的,對(duì)數(shù)據(jù)庫(kù)的連接工作是在程序一開(kāi)始即窗體的加載過(guò)程中進(jìn)行的。在Form_Load()中,首先定義了一個(gè)Connection對(duì)象cnn和一個(gè)RecordSet對(duì)象my_recordset,以及兩個(gè)字符串類(lèi)型的變量connect_string和statestring,接下來(lái)的兩個(gè)Set語(yǔ)句是為了生成一個(gè)Connection對(duì)象cnn和一個(gè)RecordSet對(duì)象my_recordset。然后是連接Access數(shù)據(jù)庫(kù),先把連接字符串“DSN=Access_db;UID=

52、;PSW="賦給字符串變量connect_string。連接字符串中的具體各項(xiàng)內(nèi)容是根據(jù)ODBC數(shù)據(jù)源的配置而定的,不同的配置方式和配置內(nèi)容就會(huì)有不同的連接字符串。cnn的Open事件用來(lái)執(zhí)行與數(shù)據(jù)庫(kù)的連接工作。為了驗(yàn)證與數(shù)據(jù)庫(kù)的連接是否正確,這里我們讀取了cnn的State屬性。State屬性可用用來(lái)說(shuō)明其對(duì)象狀態(tài)是打開(kāi)或關(guān)閉的。在使用了State屬性后,通過(guò)系統(tǒng)函數(shù)MsgBox把與數(shù)據(jù)庫(kù)的連接狀態(tài)顯示給用戶(hù)。如果連接狀態(tài)是打開(kāi)的,對(duì)話框標(biāo)題欄的文字是“adStateOpen",如下圖:如果連接狀態(tài)是關(guān)閉,則對(duì)話框標(biāo)題欄顯示“adStateClose”。其后的語(yǔ)句my_recordset.Open "Select * from wzdz ",cnn則示范了如何從數(shù)據(jù)庫(kù)中查詢(xún)所需要的數(shù)據(jù)。注意:在程序中每當(dāng)用一個(gè)Set語(yǔ)句來(lái)生成一個(gè)Connection或RecordSet對(duì)象時(shí),最后使用完畢之后應(yīng)操作使用Close方法對(duì)其進(jìn)行關(guān)閉操作。例程調(diào)試中可能出現(xiàn)的問(wèn)題:上述代碼運(yùn)行時(shí)可能會(huì)顯示"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論