李 欣
新疆工程學(xué)院,新疆烏魯木齊 830091
基于ADO下數(shù)據(jù)庫開發(fā)技術(shù)的分析
李 欣
新疆工程學(xué)院,新疆烏魯木齊 830091
隨著科學(xué)技術(shù)的進步,ODBC技術(shù)已經(jīng)逐漸被ADO技術(shù)取代,并已經(jīng)成為開發(fā)數(shù)據(jù)庫技術(shù)的主流?;诖?,本文以介紹ADO技術(shù)對象與集合為基礎(chǔ),闡述運用ADO技術(shù)開發(fā)數(shù)據(jù)的流程與原理,并講述在數(shù)據(jù)庫開發(fā)過程中需要注意的關(guān)鍵性問題,僅供技術(shù)人員參考。
ADO;數(shù)據(jù)庫;開發(fā)技術(shù)
現(xiàn)代軟件開發(fā)中,訪問數(shù)據(jù)庫是重要的工作內(nèi)容之一。傳統(tǒng)的技術(shù)在訪問數(shù)據(jù)時的速度較慢,且僅可以訪問關(guān)系型的數(shù)據(jù)庫,類型較為單一。因此,對開發(fā)數(shù)據(jù)庫的技術(shù)進行研究與創(chuàng)新,ADO技術(shù)已經(jīng)被廣泛的運用,簡化了傳統(tǒng)技術(shù)的訪問流程,并且內(nèi)存小、速度快,還可以對不同的數(shù)據(jù)源展開訪問,受到廣大工作人員的喜愛。
ADO技術(shù)的對象主要包括:流對象、屬性對象、錯誤對象、參數(shù)對象、記錄對象、字段對象、記錄集對象、命令對象以及連接對象。在所有對象中記錄集對象、命令對象以及連接對象最為重要,下面分別進行介紹:
1)連接對象是與數(shù)據(jù)源開展的唯一會話交流,既可以是ODBC數(shù)據(jù)源,也可以是OLEDB數(shù)據(jù)源。如果是服務(wù)器或者客戶端,連接對象可以對將連接等結(jié)語實際的網(wǎng)絡(luò)連接。連接對象雖然能夠?qū)?shù)據(jù)庫進行操作,但是不能返回操作記錄。
2)命令對象就是訪問數(shù)據(jù)源時的指令,在查詢數(shù)據(jù)的基礎(chǔ)上,將記錄集對象的記錄返回,還能夠刪除、插入相關(guān)命令。
3)記錄集對象表示來自命令結(jié)果、基本表的記錄全集,無論什么時候,記錄集中都是單個的記錄。
ADO技術(shù)在單機版計算機軟件中、網(wǎng)站建設(shè)中得到廣泛應(yīng)用,并得到VB、VC等編譯器的支持,在FoxPro、Access、Oracle等主流數(shù)據(jù)庫中都采用了ADO技術(shù)程序。在不同的編譯環(huán)境中,ADO語句的語法存在一定的差別,在此以VisualC++中開發(fā)Access為例,分析運用ADO技術(shù)發(fā)開數(shù)據(jù)庫的具體流程。
2.1 引入動態(tài)鏈接庫
ADO技術(shù)并不是MFC的基本類型,而是將其涵蓋在msa-do15.dll的文件之內(nèi),在開發(fā)數(shù)據(jù)庫時需要使用#mport語句為編譯指令,將其引入其中。通常情況下,StdAfxh文件包含于其他文件之中,以此可以添加語言代碼將其引入ADO的連接庫之中。如:#mport’c:program filescommon filessystemadomsado15.dll’no-namespace rename。在上述語句的指令中,no-namespace/為不能運用ADO名字的空間,同時為了不免發(fā)生常數(shù)沖突,rename將常數(shù)改為adoEOF。如果在建立開發(fā)數(shù)據(jù)中的過程中,ADO中的常數(shù)之間發(fā)生沖突,便可以利用rename進行解決[1]。
2.2 對OLE/COM進行初始化
值得注意的是,ADO數(shù)據(jù)庫是COM動態(tài)庫,這就說明調(diào)用ADO庫之前,必須對OLE/COM動態(tài)庫的環(huán)境進行初始化。在實際的應(yīng)用程序中,通常在主類函數(shù)Initlnstance中完成數(shù)據(jù)庫環(huán)境的初始化。
2.3 使用連接對象連接數(shù)據(jù)源
在使用連接對象時,同樣具有自己的工作流程:
1)聲明連接對象的類型指針,通??梢詫⑵涑绦虻某蓡T。如:m_pCnooection,_ConnectionPtr。
2)將連接對象指針實例化。此過程能夠在初始化函數(shù)中進行,如重新載入OnlnitDialog函數(shù),只需要進行一次就可以。3)建立數(shù)據(jù)庫之間的連接。調(diào)用連接對象中的Open方法建立數(shù)據(jù)庫之間的連接,輸入相關(guān)的編譯命令,實現(xiàn)連接目的。需要注意的是,連接字符串的語法根據(jù)數(shù)據(jù)庫的不同而發(fā)生相應(yīng)的變化,因此需要程序員結(jié)合實際工作調(diào)整字符串的語法。
2.4 打開記錄,開始操作
操作記錄的方式有以下幾種:
1)連接對象中的Execute方式。利用Execute方式執(zhí)行一條無法返回結(jié)果的語句,如執(zhí)行數(shù)據(jù)的存儲過程。
2)命令對象中的Execute方式。通常,命令記錄能夠返回以及數(shù)據(jù)記錄集,并提供一個相對簡單的返回記錄的存儲過程與結(jié)果。使用命令接口時,既可以使用全局接口,也可以接口中使用連接串。如果連續(xù)執(zhí)行幾次訪問數(shù)據(jù)的操作,必然是后者的結(jié)果更加準確,但是訪問數(shù)據(jù)庫的較為頻繁,并要求多個記錄集被返回,此時便需要連接對象中的全局接口來創(chuàng)建數(shù)據(jù)之間的連接,然后運用命令接口來執(zhí)行數(shù)據(jù)集存儲的過程。
3)記錄集對象中的Open方式。記錄集對象賦予記錄集較多的控制能力,例如:游標控制、記錄鎖定等。與命令對象相同,并不一定會運用創(chuàng)建完成的數(shù)據(jù)連接,可以使用連接串替代記錄集中的連接成員變量,讓自己能夠創(chuàng)建一個新的數(shù)據(jù)連接。如果程序員要運用較多的記錄集,最好與命令對象一樣,利用創(chuàng)建完成的全局接口,然后使用記錄集執(zhí)行存儲數(shù)據(jù)的命令。
2.5 退出程序,斷開鏈接
推出ADO主程序時,必須將數(shù)據(jù)庫之間的連接釋放或者斷開。完成該項工作可以在程序中添加相關(guān)的命令語句來實現(xiàn):
If(m_pConnection->State){
m_pConnection->Close();/斷開連接
m_pConnection release();/釋放連接
3.1 建立Access數(shù)據(jù)庫
要想實現(xiàn)Access數(shù)據(jù)源之間的連接,就要擁有Access的相關(guān)文件。通??梢栽谟嬎銠C系統(tǒng)中建立一個mdb文件,但是這樣的做法具有一定的弊端:第一,引發(fā)大量的操作重復(fù);第二,不利于使用軟件時的交付。為了避免上述的情況發(fā)生,需要使用ADOX在程序中建立mdb文件,實現(xiàn)自動化創(chuàng)建。ADOX是對ADO技術(shù)的補充,利用其可以創(chuàng)建一個新的Catalog,具體操作如下:
1)在使用的過程中需要利用#mport引入連接庫。
2)運用Create建立數(shù)據(jù)庫文件。實現(xiàn)自動創(chuàng)建文件的過程,避免手動創(chuàng)建的文件的繁瑣,同時提高工作效率。
3.2 在程序中建立數(shù)據(jù)表
與mdb文件一樣,同樣在計算機系統(tǒng)中完成手動建立,同樣具有大量的重復(fù)操作、不利于軟件交付的缺點。在連接數(shù)據(jù)源之后,通過連接對象來執(zhí)行建立數(shù)據(jù)表的命令。通常情況下,編譯代碼中會出現(xiàn)3個字段表,其中第一個字段是數(shù)據(jù)表的主鍵,能夠自動完成整段數(shù)字的遞加,另外兩個字段則是普通的字段[2]。
3.3 自動建立與鏈接
C r e a t e T a b l e()、C r e a t e M D B()、ConnectDatabase()三個函數(shù)之間的聯(lián)合,能夠在程序中自動建立數(shù)據(jù)并完成連接,然后自動生成數(shù)據(jù)表。要想實現(xiàn)自動化建立,可以在程序初始化函數(shù)時加入命令代碼。如:重現(xiàn)載入OnlnitDialog()函數(shù)時加入編譯代碼命令。如果在與exe文件存在同名,就建立數(shù)據(jù)庫連接,如果沒有便自動建立文件、數(shù)據(jù)表,然后實現(xiàn)連接。在應(yīng)用中,一旦使用者不喜歡程序彈出信息錯誤的窗口,便可以在命令語句去掉“彈出窗口”的相關(guān)指命令。
綜上所述,運用ADO技術(shù)開發(fā)數(shù)據(jù)庫,能夠彌補傳統(tǒng)技術(shù)的缺點,具有儲存空間要求小、訪問靈活、便于使用的優(yōu)點,同時還能對多種類型的數(shù)據(jù)庫進行訪問,還可以應(yīng)用在遠程數(shù)據(jù)庫的訪問中。就廣大的軟件而言,ADO技術(shù)能夠滿足開發(fā)數(shù)據(jù)庫軟件的相關(guān)要求,并能夠簡化工作程序,提高工作質(zhì)量,逐漸取代了ODBC的傳統(tǒng)的技術(shù),引領(lǐng)科學(xué)技術(shù)的發(fā)展方向。
[1]沈智芳.基于ADO接口技術(shù)的Oracle數(shù)據(jù)庫嵌套表的開發(fā)研究[J].甘肅聯(lián)合大學(xué)學(xué)報(自然科學(xué)版),2009(5):70-73.
[2]易當祥,呂國志,谷小青.基于ADO技術(shù)的數(shù)據(jù)庫嵌套表的開發(fā)研究[J].計算機應(yīng)用,2004(S1):128-129.
TP3
A
1674-6708(2017)192-0067-02
李欣,講師,新疆工程學(xué)院,研究方向為計算機網(wǎng)絡(luò)技術(shù)、物聯(lián)網(wǎng)技術(shù)。