資源描述:
《VC++下使用ADO訪問(wèn)Access數(shù)據(jù)庫(kù)完整篇.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、VC++下使用ADO訪問(wèn)Access數(shù)據(jù)庫(kù)完整篇2009年10月18
2、分類:編程開(kāi)發(fā)
3、3條評(píng)論
4、標(biāo)簽:VisualStudio這次先整理一下ADO的全套流程方便有類似需求的網(wǎng)友參考。實(shí)際上,根據(jù)天緣的經(jīng)驗(yàn),接口類編程只需要遵守人家的約定就可以了,很多做軟件的網(wǎng)友也都是忙的很,沒(méi)有時(shí)間一一深究。1、在StdAfx.h中引入ADO類支持方法是在StdAfx.h中增加下面兩句話:#include//如果需要?jiǎng)t添加本句#import"c:programfilescommonfilessystemado
5、msado15.dll"no_namespacerename("EOF","adoEOF")2、初始化COM環(huán)境在MFC中可以用AfxOleInit()或CoInitialize(NULL),該函數(shù)一般放在InitInstance()歷程里。非MFC使用用CoInitialize(NULL)。卸載COM環(huán)境使用CoUnInitialize(),一般放在主程序的析構(gòu)函數(shù)里。這樣我們就會(huì)三個(gè)指針可用:_ConnectionPtr、_RecordsetPtr和_CommandPtr,分別代表:_ConnectionPtr接口返回
6、一個(gè)記錄集或一個(gè)空指針,通常使用它來(lái)創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語(yǔ)句,對(duì)于要返回記錄的操作通常使用_RecordserPtr來(lái)實(shí)現(xiàn)。而用_ConnectionPtr操作時(shí)要想得到記錄條數(shù)得遍歷所有記錄,用_RecordserPtr則不需要。_RecordsetPtr指針是一個(gè)記錄集對(duì)象??梢詫?duì)記錄集提供了更多的控制功能。它不一定要使用一個(gè)已經(jīng)創(chuàng)建的數(shù)據(jù)連接,可以用一個(gè)連接串代替連接指針賦給_RecordsetPtr的connection成員變量,讓它自己創(chuàng)建數(shù)據(jù)連接。如果你要使用多個(gè)記錄集,最好的方法是
7、使用已經(jīng)創(chuàng)建了數(shù)據(jù)庫(kù)連接的全局_ConnectionPtr接口,然后使用_RecordsetPtr執(zhí)行存儲(chǔ)過(guò)程和SQL語(yǔ)句。_CommandPtr指針接口返回一個(gè)記錄集。CommandPtr提供了一種簡(jiǎn)單方法來(lái)執(zhí)行返回記錄集的存儲(chǔ)過(guò)程和SQL語(yǔ)句??梢岳萌謃ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。一次或少量數(shù)據(jù)庫(kù)訪問(wèn)操作,一般是直接使用連接串,如果需要頻繁訪問(wèn)數(shù)據(jù)庫(kù),涉及返回多個(gè)記錄集,那么,建議同_RecordsetPtr用法一樣,使用全局?jǐn)?shù)據(jù)庫(kù)連接后,再使用_Comman
8、dPtr接口執(zhí)行存儲(chǔ)過(guò)程和SQL語(yǔ)句。各指針的定義方法:_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;_CommandPtrm_pCommand;3、連接、關(guān)閉數(shù)據(jù)庫(kù)1、連接數(shù)據(jù)庫(kù)示例連接ACCESS,以昨天的FavorMan為例。???::CoInitialize(NULL);//數(shù)據(jù)庫(kù)操作前先初始化COM環(huán)境???CStringstrSQL;???//配置初始連接串???strSQL="Provider=Microsoft.Jet.OLEDB.4.0;Dat
9、aSource=blogurl.mdb;";???strSQL=strSQL+"Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource=blogurl.mdb;"+??????"JetOLEDB:DatabasePassword="+//str為上面讀到數(shù)據(jù)庫(kù)路徑信息!??????DB_PASSWRD_STRING+";"+??????"PersistSecurityInfo=False;";???//注意一定需要輸入四個(gè)\\才能表示"\"???//如果單獨(dú)輸入,必須形式為"\
10、\Abc\db\blogurl.mdb"格式!???//--連接數(shù)據(jù)庫(kù)-----------------???HRESULThr;???try???{??????hr=m_pConnection.CreateInstance("ADODB.Connection");///創(chuàng)建Connection對(duì)象??????if(SUCCEEDED(hr))??????{?????????hr=m_pConnection->Open((_bstr_t)strSQL,"","",adModeUnknown);///連接數(shù)據(jù)庫(kù)????
11、?????///上面一句中連接字串中的Provider是針對(duì)ACCESS2000環(huán)境的,對(duì)于ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51;?}??????}???}???catch(_com_errore)///捕捉異常???{??????CString