摘 要 在進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)時(shí),需要有效進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的整合應(yīng)用。因此,本文對(duì)ADO、ODBC、OLE DB和DAO等幾種基于Visual C++的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)進(jìn)行了比較研究,從而為關(guān)注這一話題的人們提供參考。
【關(guān)鍵詞】Visual C++ 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù) 比較
相較于其他的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,Visual C++具有多種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),所以在數(shù)據(jù)庫(kù)開(kāi)發(fā)方面更具有優(yōu)勢(shì)。而對(duì)基于Visual C++的幾種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)進(jìn)行比較研究,則能夠?yàn)閂isual C++的使用提供依據(jù),繼而為數(shù)據(jù)庫(kù)的開(kāi)發(fā)提供便利。
1 基于Visual C++的幾種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)
就目前來(lái)看,使用Visual C++可以在數(shù)據(jù)庫(kù)編程中運(yùn)用多種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。而常用的基于Visual C++的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)有ADO、ODBC、OLE DB和DAO等,并且不同的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)具有不同的特點(diǎn)。其中,ADO技術(shù)是用于進(jìn)行數(shù)據(jù)源訪問(wèn)的技術(shù),可以用來(lái)訪問(wèn)數(shù)據(jù)的自動(dòng)化接口。作為COM組件系統(tǒng),ADO可以提供統(tǒng)一的數(shù)據(jù)訪問(wèn)方式,并且為用戶提供編程語(yǔ)言,具有較為強(qiáng)大的數(shù)據(jù)處理功能,應(yīng)用起來(lái)較為簡(jiǎn)單。使用該技術(shù)進(jìn)行訪問(wèn)數(shù)據(jù)代碼的編寫(xiě),可以直接進(jìn)行數(shù)據(jù)庫(kù)的連接,所以能夠忽略數(shù)據(jù)庫(kù)的實(shí)現(xiàn)問(wèn)題。在訪問(wèn)數(shù)據(jù)庫(kù)的過(guò)程中,可以利用ADO中的命令對(duì)象執(zhí)行SQL命令。不同于ADO技術(shù),ODBC技術(shù)其實(shí)就是一個(gè)驅(qū)動(dòng)管理器,能夠?yàn)橛脩籼峁?shù)據(jù)庫(kù)訪問(wèn)規(guī)范和標(biāo)準(zhǔn)API。而利用SQL,這些API就能夠完成大部分任務(wù)。所以,ODBC技術(shù)可以為SQL語(yǔ)言的使用提供支持,能夠使用戶直接使用SQL語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn)。但是,由于使用API需要進(jìn)行大量代碼的編寫(xiě),所以一般開(kāi)發(fā)人員會(huì)利用Visual C++中的MFC進(jìn)行這些API的封裝。所以,使用MFC ODBC技術(shù)可以直接進(jìn)行數(shù)據(jù)庫(kù)操作,不需要了解API和SQL命令的實(shí)現(xiàn)過(guò)程。OLE DB技術(shù)是一種應(yīng)用程序接口,可以對(duì)不同類型的數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)。作為利用COM組件實(shí)現(xiàn)的接口,該技術(shù)能夠?qū)DBC功能進(jìn)行封裝,并且使用統(tǒng)一方式進(jìn)行不同信息源中的數(shù)據(jù)的訪問(wèn)。在這一過(guò)程中,使用該技術(shù)可以從數(shù)據(jù)庫(kù)中分離出需要訪問(wèn)的數(shù)據(jù),并且無(wú)需用戶了解技術(shù)的具體使用過(guò)程。而DAO技術(shù)是一種強(qiáng)大的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,能夠進(jìn)行Microsoft Jet數(shù)據(jù)庫(kù)文件的訪問(wèn),也是比較常見(jiàn)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。
2 基于Visual C++的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的比較
2.1 技術(shù)優(yōu)勢(shì)的比較
對(duì)比幾種常見(jiàn)的基于Visual C++的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)可以發(fā)現(xiàn),不同的技術(shù)擁有的應(yīng)用優(yōu)勢(shì)并不相同。首先,ADO技術(shù)作為一種Activex控件,在應(yīng)用的過(guò)程中可以為用戶編制web應(yīng)用程序提供便利。同時(shí),由于該技術(shù)與DAO技術(shù)之間存在一定的約定性,所以能夠被更好的接受。此外,ADO技術(shù)也擁有DLE DB技術(shù)對(duì)不同數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)的優(yōu)勢(shì),因此能夠使程序開(kāi)發(fā)過(guò)程得到簡(jiǎn)化。其次,使用ODBC技術(shù)可以進(jìn)行標(biāo)準(zhǔn)API的建立,所以能夠利用SQL語(yǔ)句進(jìn)行系統(tǒng)大部分功能的實(shí)現(xiàn)。同時(shí),該技術(shù)具有較強(qiáng)的獨(dú)立性和開(kāi)放性,所以能夠進(jìn)行程序開(kāi)發(fā)環(huán)節(jié)的簡(jiǎn)化。但是,使用該技術(shù)進(jìn)行編程,將遭遇跟蹤事務(wù)難的問(wèn)題。而使用MFC ODBC技術(shù)進(jìn)行編程,則能夠避免開(kāi)發(fā)人員進(jìn)行DBMS細(xì)節(jié)的關(guān)注,從而進(jìn)行編程工作的簡(jiǎn)化。然而,使用該技術(shù)無(wú)法進(jìn)行非關(guān)系型數(shù)據(jù)庫(kù)的有效訪問(wèn),并且訪問(wèn)數(shù)據(jù)庫(kù)的速度稍慢。再者,使用OLE DB技術(shù)進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā),能夠方便快捷的進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn),并且具有較高的數(shù)據(jù)庫(kù)訪問(wèn)效率。此外,相較于以上幾種技術(shù),DAO技術(shù)在數(shù)據(jù)控制層分析和邏輯控制層實(shí)現(xiàn)方面具有一定的優(yōu)勢(shì),能夠更好的在數(shù)據(jù)庫(kù)操作和管理中應(yīng)用。但是,使用該技術(shù)進(jìn)行高級(jí)數(shù)據(jù)庫(kù)的訪問(wèn)時(shí),會(huì)遭遇訪問(wèn)速率不高的問(wèn)題。
2.2 技術(shù)使用場(chǎng)景的比較
通過(guò)比較幾種技術(shù)的使用場(chǎng)景可以發(fā)現(xiàn),不同技術(shù)可以在不同的數(shù)據(jù)庫(kù)訪問(wèn)背景下使用。比如在訪問(wèn)數(shù)據(jù)庫(kù)中如果不需要進(jìn)行底層控制,就可以使用ADO技術(shù)。同時(shí),如果需要進(jìn)行AQL數(shù)據(jù)庫(kù)的處理,就可以使用ODBC技術(shù)。此外,如果需要快速進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn),就可以選擇OLE DB技術(shù)。就目前來(lái)看,在使用ODBC技術(shù)進(jìn)行SOL數(shù)據(jù)庫(kù)的訪問(wèn)時(shí),開(kāi)發(fā)人員往往會(huì)利用開(kāi)發(fā)中間鏈接進(jìn)行訪問(wèn)驅(qū)動(dòng)程序的構(gòu)建,并且根據(jù)不同需求對(duì)DBMS驅(qū)動(dòng)程序的編寫(xiě)提出要求。而在連接Microsoft Jet數(shù)據(jù)源時(shí),通常會(huì)利用DAO技術(shù)進(jìn)行Access面向?qū)ο蟮牡谝唤涌诘倪B接。但在這一過(guò)程中,由于需要進(jìn)行SQL語(yǔ)法的使用,所以必須是在用戶使用相應(yīng)的控件或設(shè)備時(shí)才能使用DAO技術(shù)直接進(jìn)行SOL數(shù)據(jù)庫(kù)的訪問(wèn)。因此,只有在特定的應(yīng)用背景下,DAO技術(shù)才能成為用于進(jìn)行Access數(shù)據(jù)庫(kù)訪問(wèn)的最便利和最快捷的技術(shù)。同樣的,在具體進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)選擇時(shí),使用者也需要綜合考慮數(shù)據(jù)源訪問(wèn)速度、類型和編程效率才能進(jìn)行相應(yīng)技術(shù)的選擇。
3 結(jié)論
總而言之,想要使用基于Visual C++的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),還要綜合了解各種技術(shù)的優(yōu)勢(shì)和使用背景,從而進(jìn)行有利方案的選擇。在此基礎(chǔ)上,才能對(duì)不同技術(shù)進(jìn)行有效整合,從而獲得較高的數(shù)據(jù)庫(kù)訪問(wèn)效率。
參考文獻(xiàn)
[1]岳宇賓,韓秋實(shí),李啟光等.基于Visual C++6.0的數(shù)控凸輪軸磨床工藝數(shù)據(jù)庫(kù)開(kāi)發(fā)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014,07:117-119.
[2]肖軍,儲(chǔ)海燕.VC環(huán)境下數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的比較分析[J].西安航空技術(shù)高等專科學(xué)校學(xué)報(bào),2012,01:69-71.
[3]李莉.VC++中數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)研究[J].通訊世界,2015,10:249.
作者簡(jiǎn)介
張仕遠(yuǎn)(1982-),男,大學(xué)本科學(xué)歷?,F(xiàn)為中國(guó)船舶重工集團(tuán)公司第七一五研究所工程師,研究方向?yàn)殡娮蛹夹g(shù)。
作者單位
中國(guó)船舶重工集團(tuán)公司第七一五研究所 浙江省杭州市 310023