許 瑩
(江蘇財(cái)會(huì)職業(yè)學(xué)院信息系,江蘇 連云港 222000)
基于VB的ADO技術(shù)應(yīng)用與研究*
許 瑩
(江蘇財(cái)會(huì)職業(yè)學(xué)院信息系,江蘇 連云港 222000)
介紹并分析了VB中ADO技術(shù)的體系結(jié)構(gòu)和分層對(duì)象模型,詳細(xì)描述了VB中使用ADO訪問數(shù)據(jù)庫的兩種不同的方法,最后通過超市管理系統(tǒng)具體實(shí)現(xiàn)了在VB中使用ADO連接數(shù)據(jù)庫的功能.
VB;ADO;數(shù)據(jù)庫
引言
VB是微軟公司出品的可視化編程工具,它源自于Basic編程語言,可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,并支持對(duì)Access、dBase、SQL、Oracle等數(shù)據(jù)庫的連接,甚至可以操作Excel表格,Word等文本編輯軟件.SQL Server是微軟推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)管理功能十分強(qiáng)大,其具有數(shù)據(jù)穩(wěn)定、安全和存儲(chǔ)高速等特點(diǎn),因而被廣泛應(yīng)用于各大數(shù)據(jù)庫管理系統(tǒng)中.利用VB的ADO技術(shù)開發(fā)數(shù)據(jù)庫,是現(xiàn)在常用的開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)的技術(shù)手段.
ADO是繼DAO和RDO之后出現(xiàn)的數(shù)據(jù)庫訪問技術(shù),它克服了DAO的對(duì)SQL Server、Oracle等非MDB文件格式的數(shù)據(jù)庫訪問速度會(huì)降低,以及RDO的訪問不穩(wěn)定問題的缺點(diǎn),并繼承了二者的優(yōu)點(diǎn),其封裝并實(shí)現(xiàn)了OLE DB(Objects link and Embedding Database,對(duì)象鏈接與嵌入式數(shù)據(jù)庫)的所有功能.ADO既適合訪問Oracle、Access、SQL Sever等數(shù)據(jù)庫應(yīng)用程序,也可應(yīng)用在圖形文件、文本以及Excel表格等數(shù)據(jù)文件中.具有速度高、使用方便、內(nèi)存之處低和磁盤空間占用少等優(yōu)點(diǎn),使其成為當(dāng)前數(shù)據(jù)庫開發(fā)的主流技術(shù).
1.1基于ADO的應(yīng)用系統(tǒng)體系結(jié)構(gòu)
圖1為ADO的應(yīng)用系統(tǒng)體系結(jié)構(gòu),是屬于處理應(yīng)用程序調(diào)用的中間層,位于應(yīng)用程序和OLE DB之間.由于數(shù)據(jù)庫的種類繁多,各種數(shù)據(jù)庫提供的訪問方法千差萬別,數(shù)據(jù)庫管理人員就需要掌握不同的數(shù)據(jù)庫管理語言,這帶來很大的學(xué)習(xí)成本.為了能夠提供一種統(tǒng)一的數(shù)據(jù)庫訪問方法,微軟提出了統(tǒng)一的數(shù)據(jù)訪問策略UDA,其策略是一個(gè)數(shù)據(jù)源對(duì)應(yīng)所有的數(shù)據(jù),OLE DB對(duì)數(shù)據(jù)進(jìn)行過濾,將不同格式的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一格式,形成了統(tǒng)一的接口,為應(yīng)用程序訪問不同的數(shù)據(jù)類型提供了標(biāo)準(zhǔn)的方法.
圖1 基于ADO的應(yīng)用系統(tǒng)體系結(jié)構(gòu)
ADO與OLE DB實(shí)際上是同一個(gè)技術(shù),但其表現(xiàn)形式略有不同,ADO提供的是一個(gè)對(duì)象模型,而OLE DB提供的是通過COM接口的底層數(shù)據(jù)接口,ADO簡化了應(yīng)用程序從OLE DB中獲取數(shù)據(jù)的過程,其將OLE DB中獲取數(shù)據(jù)的COM接口封裝成API接口函數(shù),使用時(shí)直接調(diào)用API接口,而無需考慮COM接口的工作工程,簡化了OLE DB的模型.
1.2ADO的對(duì)象模型
ADO的對(duì)象模型具有層次結(jié)構(gòu),如圖2所示,其主要由三個(gè)主對(duì)象組成,分別是Connection、Command和Recordset,三個(gè)主對(duì)象中分別由四個(gè)對(duì)象集合組成,分別是Errors、Parameters、Fields和Properties.Connection對(duì)象主要負(fù)責(zé)與需要連接的數(shù)據(jù)源建立連接;Command對(duì)象中包含訪問數(shù)據(jù)源所需要的命令;Recordset對(duì)象用于存放在結(jié)果集中的記錄;Parameter對(duì)象用于參數(shù)化查詢,查詢與Command對(duì)象相關(guān)的參數(shù);Property對(duì)象是ADO對(duì)象的屬性;Field對(duì)象是Recordset對(duì)象的一列,包含了記錄集中某個(gè)記錄的字段信息.ADO中最常用的是Connection對(duì)象和Recordset對(duì)象,這兩個(gè)對(duì)象可以完成大部分的數(shù)據(jù)庫操作.Recordset中常用的方法是:Close方法是關(guān)閉記錄集;Delete方法是刪除當(dāng)前的記錄;AddNew方法是在記錄中添加一個(gè)新紀(jì)錄;Move方法是將當(dāng)前的記錄移動(dòng)到其他位置,Update方法可以更新記錄集;Open方法是打開一個(gè)已建立的記錄集.
圖2 ADO分層對(duì)象結(jié)構(gòu)模型
1.3ADO數(shù)據(jù)控件
ADO數(shù)據(jù)控件是一個(gè)ActiveX控件,默認(rèn)的VB中時(shí)需要手動(dòng)添加才能使用的.ADO數(shù)據(jù)控件的屬性有:ConnectionString屬性,其作用是建立應(yīng)用程序與數(shù)據(jù)源的連接,不同的數(shù)據(jù)源要通過不同的OLE DB數(shù)據(jù)訪問接口,通過Provider參數(shù)指定需要使用的OLE DB接口,Data Source參數(shù)指定需要指向的數(shù)據(jù)庫文件,密碼和數(shù)據(jù)庫用戶名等信息.CommandType屬性需要和RecordSource屬性一起配合使用,其主要作用是指明命令的類型.RecordSource屬性,用于設(shè)置ADO記錄集的內(nèi)容和來源,其中,根據(jù)CommandType中的屬性取值不同,對(duì)應(yīng)的ADO記錄集的類型是不同的,比如CommandType屬性的取值是adCmdText,則RecordSource中的屬性內(nèi)容是查詢語句的文本串,如果CommandType屬性取值為adCmdTable,那么RecordSource的屬性內(nèi)容為一個(gè)表名.RecoudSet屬性本身又是一個(gè)對(duì)象,又被成為記錄集.需要注意的是,在改變ADO數(shù)據(jù)控件的屬性時(shí),改變后屬性不是立即生效的,需要通過Refresh方法進(jìn)行生效.
2.1基于ADO數(shù)據(jù)控件訪問數(shù)據(jù)庫
此種方式采用了創(chuàng)建數(shù)據(jù)庫連接向?qū)У姆绞剑洳襟E如下所示:
1)添加ADO數(shù)據(jù)控件到工具箱,并將ADO數(shù)據(jù)控件對(duì)象放到窗體中,并命名為Ado1;
2)配置Ado1的Connection String屬性,用于建立與數(shù)據(jù)庫的連接,格式分為兩種,一種是采用OLE DB的程序連接串,一種是采用ODBC數(shù)據(jù)源testDSN連接串;
3)配置Ado1的RecordSource屬性,如設(shè)置RecordSource的“Command Type”為“adCmdText”,“Command Text(SQL)”為“select * from admin where id like ‘21*’”,表示從數(shù)據(jù)庫的admin數(shù)據(jù)表中返回字段id的前兩位為“21”的所有記錄;
4)將Ado1控件與TableList控件綁定,將其DataSource屬性設(shè)置為Ado1實(shí)現(xiàn)二者的綁定.
2.2基于ADO對(duì)象的數(shù)據(jù)庫訪問
此種方式需要先引用ADO對(duì)象庫,即“Microsoft ActiveX Data Object 2.8 library”,如圖3所示,其步驟如下所示:
圖3 引用ADO對(duì)象庫
1)打開“工程”菜單下的“引用”對(duì)話框,并選擇ADO對(duì)象庫.
2)通過Dim <對(duì)象名> As New ADODB.Connection,定義連接對(duì)象,然后設(shè)置連接數(shù)據(jù)庫字符串ConnectionString屬性,該屬性用于配置數(shù)據(jù)庫的各項(xiàng)參數(shù)信息.
3)調(diào)用Open方法打開數(shù)據(jù)庫,<對(duì)象名>.Open[ConnectionString],[ID],[name].
4)利用命令集對(duì)象或者記錄集對(duì)象操作數(shù)據(jù)表.
5)訪問結(jié)束后,對(duì)連接對(duì)象和記錄集進(jìn)行關(guān)閉,釋放內(nèi)存空間.
3.1數(shù)據(jù)庫表設(shè)計(jì)
在SQL Server 2008中建立超市管理系統(tǒng)數(shù)據(jù)庫,添加user表來存放超市管理員的基本信息.其基本數(shù)據(jù)包括用戶名、密碼和用戶級(jí)別,其中用戶級(jí)別為一般管理人員和系統(tǒng)管理人員兩類,user表的結(jié)構(gòu)如圖4所示.
圖4 user表結(jié)構(gòu)
3.2系統(tǒng)實(shí)現(xiàn)
在VB中,新建SM_Admin工程,并加入公共模塊Module1,并在用戶窗體界面設(shè)計(jì)用戶登錄界面如圖5所示.此界面中,如果用戶輸入正確的用戶名和密碼,系統(tǒng)會(huì)跳到首頁顯示,表示用戶登錄成功;如果用戶輸入錯(cuò)誤的用戶名或密碼,則系統(tǒng)會(huì)保留此頁面,并提示用戶錯(cuò)誤,請(qǐng)重新輸入信息.
圖5 超市管理系統(tǒng)登錄界面
在系統(tǒng)中添加用戶窗體useradmin.frm,此窗體用于對(duì)系統(tǒng)中的用戶進(jìn)行添加、刪除、修改等操作,此窗體中的內(nèi)容需要和SQL數(shù)據(jù)庫進(jìn)行連接,所以需要用到ADO Data數(shù)據(jù)控件,結(jié)合一個(gè)DataGrid控件進(jìn)行數(shù)據(jù)輸出顯示,以及四個(gè)命令按鈕組成,窗體界面如圖6所示
圖6 useradmin窗體界面設(shè)計(jì)
設(shè)置ADO Data控件Ado1的ConnectionString屬性為“DSN = SM”即連接SM數(shù)據(jù)庫,RecordSource屬性設(shè)置為“Select * from admin”,即為查詢admin數(shù)據(jù)表中的數(shù)據(jù).然后將DataGrid控件的DataSource屬性設(shè)置為Ado1,并點(diǎn)擊鼠標(biāo)右鍵選擇“檢索字段”選項(xiàng),完成控件與數(shù)據(jù)表的數(shù)據(jù)綁定,這樣就可以在DataGrid控件上顯示SM數(shù)據(jù)庫中的user數(shù)據(jù)表中的記錄和字段,并對(duì)user數(shù)據(jù)表進(jìn)行增刪改查的操作,不需要編寫代碼就可以對(duì)數(shù)據(jù)庫進(jìn)行操作.
窗體中四個(gè)按鈕分別用于對(duì)admin數(shù)據(jù)表的添加、修改、刪除和返回首頁等操作.設(shè)置系統(tǒng)用戶界面窗體如圖7所示.
圖7 設(shè)置系統(tǒng)用戶
點(diǎn)擊添加按鈕,然后在“用戶名”和“口令”列輸入要添加的新用戶信息.然后選擇用戶級(jí)別為“一般操作員”,然后再次點(diǎn)擊添加按鈕,系統(tǒng)會(huì)將新建的用戶信息添加到user數(shù)據(jù)表中,并顯示在設(shè)置系統(tǒng)用戶界面DataGrid控件中,如圖8所示.從而通過ADO完成了應(yīng)用程序和數(shù)據(jù)庫的連接.
圖8 添加系統(tǒng)管理員界面
通過ADO連接超市管理系統(tǒng)的用戶管理數(shù)據(jù)表和應(yīng)用程序,實(shí)現(xiàn)了應(yīng)用程序?qū)?shù)據(jù)庫的增刪改查操作,其代碼簡潔易用,易于掌握,本文詳細(xì)介紹了VB中使用ADO對(duì)象和ADO控件的數(shù)據(jù)庫訪問方式,并結(jié)合超市管理系統(tǒng)實(shí)例介紹了ADO控件的具體實(shí)現(xiàn),具有一定的實(shí)踐意義.
[1]彭志敏. 基于ADO數(shù)據(jù)庫訪問技術(shù)的財(cái)務(wù)智能管理系統(tǒng)的設(shè)計(jì)[J]. 自動(dòng)化與儀器儀表,2016(11):105-106.
[2]王素芳. VB中數(shù)據(jù)庫訪問技術(shù)的應(yīng)用研究[J]. 科技視界,2014(12):55-56.
[3]汪秋貴,劉國華,黃振輝. VB中運(yùn)用Data和ADO Data連接數(shù)據(jù)庫的方法[J]. 科技創(chuàng)新導(dǎo)報(bào),2014(09):65.
[4]柏建普,杜娟. ADO技術(shù)在VB訪問SQL數(shù)據(jù)庫中的應(yīng)用[J]. 電腦知識(shí)與技術(shù),2013(29):6481-6485+6488.
[5]張新華. 基于VB與ADO的應(yīng)用系統(tǒng)開發(fā)技術(shù)研究[J]. 赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2013(16):24-25.
[6]王鵬宇. 在VB中應(yīng)用ADO數(shù)據(jù)對(duì)象訪問數(shù)據(jù)庫[J]. 電腦知識(shí)與技術(shù),2008(19):11-12+25.
[7]張宗飛. VB中基于ADO的數(shù)據(jù)庫訪問技術(shù)分析及應(yīng)用[J]. 計(jì)算機(jī)與數(shù)字工程,2008(03):53-56+165.
[8]劉蕾. 微軟數(shù)據(jù)訪問技術(shù)的分析與應(yīng)用[D].大連:東北財(cái)經(jīng)大學(xué),2007.
[9]田啟明. 基于VB6平臺(tái)的DAO、RDO和ADO數(shù)據(jù)庫訪問技術(shù)分析與比較[J]. 電腦學(xué)習(xí),2004(03):33-34.
[10]徐成杰,金春霞,余揚(yáng)信. VB中ADO技術(shù)的應(yīng)用機(jī)制分析[J]. 淮陰工學(xué)院學(xué)報(bào),2001(06):9-12.
[11]萬迪華,湯彬,許志文. ADO數(shù)據(jù)訪問技術(shù)及其在VB中的實(shí)現(xiàn)[J]. 計(jì)算機(jī)與現(xiàn)代化,2001(05):56-58.
ApplicationandResearchofADOTechnologyBasedonVB
XU Ying
(Department of Information, Jiangsu College of Finance & Accounting, Lianyungang Jiangsu 222000, China)
This article introduces and analyses the system structure and the hierarchical model of ADO technology in VB, describes two different methods of using ADO to access the database based on VB, and finally uses the supermarket managing system to implement the function of connecting database by using ADO in VB.
VB; ADO; database
1673-2103(2017)05-0055-05
2017-02-13
許瑩,女(1984-),江蘇連云港人,工程碩士,講師,研究方向:大數(shù)據(jù)應(yīng)用,軟件技術(shù).
T311.311
A