資源描述:
《vc++中使用ado方式操作access數(shù)據(jù)庫》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、VC++中使用ADO方式操作ACCESS數(shù)據(jù)庫ADO(ActiveXDataObject)是Microsoft數(shù)據(jù)庫應(yīng)用程序開發(fā)的新接口,是建立在OLEDB之上的高層數(shù)據(jù)庫訪問技術(shù),即使你對(duì)OLEDB,COM不了解也能輕松對(duì)付ADO,因?yàn)樗浅:?jiǎn)單易用,甚至比你以往所接觸的ODBCAPI、DAO、RDO都要容易使用,并不失靈活性。本文詳細(xì)地介紹在VisualC++開發(fā)環(huán)境下如何使用ADO來進(jìn)行數(shù)據(jù)庫應(yīng)用程序開發(fā),并給出示例代碼。為了使讀者朋友都能測(cè)試本例提供的代碼,我們采用Access數(shù)據(jù)庫,您可以直接在我們提供的示例代碼中找到這個(gè)test.mdb。程序編譯運(yùn)行
2、后的效果如圖一所示:圖一、ADO操作ACESS數(shù)據(jù)庫的界面效果圖 一、實(shí)現(xiàn)方法 萬事開頭難,任何一種新技術(shù)對(duì)于初學(xué)者來說最重要的還是"入門",掌握其要點(diǎn)。讓我們來看看ADO數(shù)據(jù)庫開發(fā)的基本流程吧!它的基本步驟如下: ?。?)初始化COM庫,引入ADO庫定義文件 ?。?)用Connection對(duì)象連接數(shù)據(jù)庫 (3)利用建立好的連接,通過Connection、Command對(duì)象執(zhí)行SQL命令,或利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢、處理。 ?。?)使用完畢后關(guān)閉連接釋放對(duì)象?! ∠旅嫖覀儗⒃敿?xì)介紹上述步驟并給出相關(guān)代碼?! ?、COM庫的初始化
3、我們可以使用AfxOleInit()來初始化COM庫,這項(xiàng)工作通常在CWinApp::InitInstance()的重載函數(shù)中完成,請(qǐng)看如下代碼:BOOLCADOTest1App::InitInstance(){ AfxOleInit(); ......?} 2、用#import指令引入ADO類型庫 為了引入ADO類型庫,需要在項(xiàng)目的stdafx.h文件中加入如下語句:#import"c:programfilescommonfilessystemadomsado15.dll"?no_namespacerename("EOF","adoEOF")
4、這一語句有何作用呢?其最終作用同我們已經(jīng)十分熟悉的#include類似,編譯的時(shí)候系統(tǒng)會(huì)為我們生成msado15.tlh,ado15.tli兩個(gè)C++頭文件來定義ADO庫?! ⌒枰x者朋友注意的是:您的開發(fā)環(huán)境中msado15.dll不一定在這個(gè)目錄下,請(qǐng)按實(shí)際情況修改;在編譯的時(shí)候可能會(huì)出現(xiàn)如下警告,對(duì)此微軟在MSDN中作了說明,并建議我們不要理會(huì)這個(gè)警告:msado15.tlh(405):warningC4146:unaryminusoperatorappliedtounsignedtype,resultstillunsigned?! ?、創(chuàng)建Connect
5、ion對(duì)象并連接數(shù)據(jù)庫 為了首先我們需要添加一個(gè)指向Connection對(duì)象的指針_ConnectionPtrm_pConnection,下面的代碼演示了如何創(chuàng)建Connection對(duì)象實(shí)例及如何連接數(shù)據(jù)庫并進(jìn)行異常捕捉:BOOLCADOTest1Dlg::OnInitDialog(){ CDialog::OnInitDialog(); HRESULThr; try { hr=m_pConnection.CreateInstance("ADODB.Connection");///創(chuàng)建Connection對(duì)象 if(SUCCEEDED(hr)) { h
6、r=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; DataSource=test.mdb","","",adModeUnknown);///連接數(shù)據(jù)庫 //上面一句中連接字串中的Provider是針對(duì)ACCESS2000環(huán)境的,對(duì)于ACCESS97, //需要改為:Provider=Microsoft.Jet.OLEDB.3.51; } } catch(_com_errore)///捕捉異?! CStringerrormessage; errormessage.Format("連
7、接數(shù)據(jù)庫失敗!r錯(cuò)誤信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///顯示錯(cuò)誤信息 } 在這段代碼中我們是通過Connection對(duì)象的Open方法來進(jìn)行連接數(shù)據(jù)庫的,下面是該方法的原型:HRESULTConnection15::Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions); 上述函數(shù)中參數(shù)ConnectionString為連接字串;參數(shù)UserID是用戶名;參數(shù)Password是登陸密碼;
8、參數(shù)Options是連接