摘要:數(shù)據(jù)庫(kù)編程是VB程序設(shè)計(jì)的重要應(yīng)用之一,利用VB設(shè)計(jì)的用戶界面去操作數(shù)據(jù)庫(kù)可以很方便地實(shí)現(xiàn)數(shù)據(jù)的安全性控制、合理分工、分時(shí)使用數(shù)據(jù)庫(kù)以及界面美觀,操作靈活、方便等一系列優(yōu)點(diǎn)。
關(guān)鍵詞:數(shù)據(jù)庫(kù)控件;數(shù)據(jù)庫(kù)感知控件;Data;Adodc;屬性;方法
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)14-3700-02
VB Database Programming Control
LI Ying
(High Technical School in Dongguan City, Dongguan 523000, China)
Abstract: VB Database Programming is programming one of the important applications, the use of VB user interface designed to operate the database it is easy to achieve data security control, a reasonable division of labor, time to use the database as well as beautiful interface, operation flexibility, to facilitate a series of advantages.
Key words: database controls; database-aware controls; Data; Adodc; properties; methods
1 引言
利用VB編程實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作有許多不同的控件,每種控件又有不同的連接和讀寫的方法,就算同一種控件連接不同的數(shù)據(jù)庫(kù),在使用中也稍有不同,這些問(wèn)題給初學(xué)者帶來(lái)很多困擾,本文以Access數(shù)據(jù)庫(kù)結(jié)合Data控件為例講述數(shù)據(jù)庫(kù)編程的一些具體方法和步驟,對(duì)初學(xué)者有一定的參考和借鑒意義。
2 VB操作數(shù)據(jù)庫(kù)的主要控件或方法
VB操作數(shù)據(jù)庫(kù)的主要控件大體有以下幾種:
1) Data控件及其相關(guān)的數(shù)據(jù)感知控(如:DBGrid、DBList、DBCombo、MsFlexGrid等等)。
Data是VB的標(biāo)準(zhǔn)控件,其優(yōu)點(diǎn)是使用方便、操作簡(jiǎn)單、方法和屬性多,技術(shù)也比較成熟,缺點(diǎn)是僅能連接操作本地?cái)?shù)據(jù)庫(kù),且該控件比較古老,能夠連接的數(shù)據(jù)庫(kù)庫(kù)種類不多,不能識(shí)別Access2000及以上的版本,使用前必須利用菜單功能轉(zhuǎn)換成Access97以下低版本才能連接和使用。因此一般用于初學(xué)者打基礎(chǔ)就可以了。
2) Adodc控件及其相關(guān)的數(shù)據(jù)感知控(如:DataGrid、DataList、DataCombo、MsHFlexGrid等等)。
ADO即ActiveX數(shù)據(jù)對(duì)象,是目前最新的數(shù)據(jù)訪問(wèn)接口,又稱為OLE自動(dòng)化接口,是訪問(wèn)由Microsoft推出的最新、功能最強(qiáng)的應(yīng)用程序接口。ADO是為OLE DB而設(shè)計(jì)的。(OLE DB是微軟的戰(zhàn)略性的通向不同的數(shù)據(jù)源的低級(jí)應(yīng)用程序接口,OLE DB不僅包括微軟資助的標(biāo)準(zhǔn)數(shù)據(jù)接口開放數(shù)據(jù)庫(kù)連通性的結(jié)構(gòu)化問(wèn)題語(yǔ)言(SQL)能力,還具有面向其他非SQL數(shù)據(jù)類型的通路),因此,ADO Data控件能訪問(wèn)各種類型的數(shù)據(jù)庫(kù),這是Data控件無(wú)法實(shí)現(xiàn)的。
3) 純編程實(shí)現(xiàn)數(shù)據(jù)連接操作的ADO和RDO方法。
VB用純編程的方法實(shí)現(xiàn)數(shù)據(jù)的連接操作具有通用性好,操作靈活方便,安裝時(shí)不受文件目錄及位置影響,無(wú)需手式設(shè)置和人工干預(yù)。適合比較大型的專業(yè)程序開發(fā)設(shè)計(jì)。
3 VB操作數(shù)據(jù)庫(kù)的過(guò)程和步驟
不論采用哪種方法進(jìn)行數(shù)據(jù)庫(kù)編程,大體上都要從下面幾方面入手進(jìn)行設(shè)計(jì):
1) 確定立所用控件,建立VB與數(shù)據(jù)庫(kù)的連接(可以是手工或使用連接字進(jìn)行連接,因控件的不同而異),一般用ConnectString或DataBaseName屬性。
2) 建立記錄源,指定需要操作的表,一般用RecordSource屬性。
3) 設(shè)置顯示控件與數(shù)據(jù)庫(kù)記錄集控件的關(guān)聯(lián)屬性。
4 Data控件的使用方法
4.1 主要連接屬性
Connect:數(shù)據(jù)庫(kù)連接的種類(VB默認(rèn)為Access數(shù)據(jù)庫(kù))。
Databasename:被連接的數(shù)據(jù)全名(含路徑)。
RecordSource:被連數(shù)據(jù)庫(kù)的表或查詢。
RecordsetType:指出讀/寫表記錄的方法(是只讀還是可寫等)
* Table---可以瀏覽、查詢、修改和更新。(單表)
* Dynaset---可以對(duì)多表操作,但不自動(dòng)更新。(可以是多表查詢)
* Snapshot---對(duì)記錄只能讀不能寫。
4.2 文本型控件Text與Data控件的梆定
DataSource=Data1(可以一次性統(tǒng)一指派)
DataField=相關(guān)字段
具體見下圖1,圖2所示。
圖1圖2
小結(jié):以上是用設(shè)計(jì)方法進(jìn)行連接設(shè)置,更換機(jī)器或目錄均不能運(yùn)行,可移植性較差。
圖3是運(yùn)行效果圖。
4.3 通過(guò)代碼進(jìn)行連接設(shè)置
圖4是通過(guò)代碼進(jìn)行連接設(shè)置的。
注意:Text控件的DataSource屬性不能通過(guò)代碼設(shè)計(jì),必須手工設(shè)置。
見圖5所示。
相關(guān)代碼如下:
Private Sub Form_Load()
'Data1.Connect = \"Access\"此句可以省略
'Text1.DataSource = Data1此句錯(cuò)誤,不能用代碼,要在設(shè)計(jì)時(shí)指定。
'Text2.DataSource = Data1此句錯(cuò)誤,不能用代碼,要在設(shè)計(jì)時(shí)指定。
Data1.DatabaseName = App.Path + \"\\xsdn.mdb\"
Data1.RecordSource = \"xsdn\"
Text1.DataField = \"學(xué)號(hào)\"
Text2.DataField = \"姓名\"
Text3.DataField = \"家庭地址\" '此處注意與表字段名保持同名
End Sub
如圖6所示。
小結(jié):代碼設(shè)計(jì)的優(yōu)點(diǎn)是:移植性稍好,但要保證數(shù)據(jù)放在應(yīng)用程序同一個(gè)目錄或文件夾之中才行。
5 Data控件的其他方法
AddNew-----向相關(guān)表添加一條新記錄。如 Data1.Recordset.Addnew
Delete-----向刪除相關(guān)表當(dāng)前的一條記錄,指針自動(dòng)向下移動(dòng)。
Edit-----用于對(duì)可更新的當(dāng)前記錄進(jìn)行編輯修改。
Move----記錄移動(dòng)組群,含MoveFirst、MoveLast、MoveNext、MovePrevious。
Find----查找方法的組群,含F(xiàn)indFirst、FindLast、FindNext、FindPrevious方法。
Refresh---更新數(shù)據(jù)控件的集合內(nèi)容。
Seek-----通過(guò)索引的方法查找表記錄。
Update----將修改的記錄內(nèi)容保存到數(shù)據(jù)庫(kù)表中去。
RecodCount----返回記錄集中符合條件的記錄總數(shù)。
UpdateControls----用于恢復(fù)修改記錄之前的記錄內(nèi)容。(沒有Recordset字)
例如,設(shè)計(jì)一個(gè)通過(guò)文本框輸入姓名進(jìn)行記錄查找的界面。相關(guān)代碼如下:
Private Sub Command1_Click()
Data1.Recordset.FindFirst \"姓名='\" Text4 \"'\"
IfData1.Recordset.NoMatch Then
MsgBox \"查無(wú)此人\"
End If
End Sub
如圖7所示。
6 結(jié)束語(yǔ)
VB數(shù)據(jù)庫(kù)編程是企業(yè)實(shí)現(xiàn)自動(dòng)化數(shù)據(jù)管理的最基本應(yīng)用,通過(guò)VB界面操作數(shù)據(jù)庫(kù)可以使用信息更安全,比如你可以建立用戶登錄,根據(jù)用戶的不同進(jìn)行不同操作的界面,也可以使不同的用戶分擔(dān)不同的工作。在學(xué)習(xí)數(shù)據(jù)庫(kù)編程時(shí)應(yīng)先從簡(jiǎn)單的控件入手,掌握其基礎(chǔ)方法、屬性,再過(guò)渡到復(fù)雜的數(shù)據(jù)控件這樣學(xué)習(xí)起來(lái)就得心應(yīng)手。
參考文獻(xiàn):
[1] 鄭阿奇.Visual Basic實(shí)用教程[M].北京:電子工業(yè)出版社,2005.
[2] 陳紫紅.Visual Basic項(xiàng)目開發(fā)實(shí)例[M].北京:清華大學(xué)出版社,2008.