資源描述:
《mfc中用ado連接數(shù)據(jù)庫(kù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、MFC中用Ado連接數(shù)據(jù)庫(kù) 2008-05-0917:59分類(lèi):計(jì)算機(jī)編程字號(hào):大大?中中?小小VC++中使用MFC通過(guò)ADO連接數(shù)據(jù)庫(kù)方法小結(jié)(不包括異常的捕捉)這里主要講MFC與SQL2000數(shù)據(jù)庫(kù)的連接。1.在StdAfx.h頭文件中加入此句子#import"c:programfilescommonfilessystemadomsado15.dll"?no_namespacerename("EOF","adoEOF")2.在App類(lèi)的InitInstance()函數(shù)中加入::CoInitialize
2、(NULL);//表示com庫(kù)的初始化?鼠標(biāo)右鍵點(diǎn)擊App類(lèi)名添加虛函數(shù)ExitInstance(),在其中加入代碼?::CoUninitialize();//釋放com庫(kù)。3.獲取連接字符串。????最簡(jiǎn)單的方法就是新建一個(gè).txt文件,將其后綴名改為.udl,雙擊它,在“提供程序”標(biāo)簽頁(yè)中選擇“MicrosoftOLEDBProvidefoSqlServer”,然后在“連接”標(biāo)簽頁(yè)選擇填寫(xiě)服務(wù)器、數(shù)據(jù)庫(kù)、登陸方式等信息,最后按“確定”。連接完成之后,將其用寫(xiě)字板打開(kāi),第三行信息,如“Provider=SQLOLE
3、DB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=RuleDB_Data;DataSource=PYE”即為連接字符串。注意,若數(shù)據(jù)庫(kù)位于本機(jī),在選擇填寫(xiě)服務(wù)器一欄可直接填寫(xiě)(local),記得一定要加括號(hào)。4.連接數(shù)據(jù)庫(kù)????在這里引入一個(gè)編寫(xiě)好的封裝類(lèi):ADOConn。該類(lèi)封裝了連接數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行添加、刪除、修改操作及獲取查詢記錄集操作的方法。用戶可直接使用,這個(gè)類(lèi)的頭文件和cpp文件內(nèi)容將在本文最后給出。???在一
4、個(gè)工程里加入該類(lèi)的方法為:把該類(lèi)的頭文件和cpp文件拷貝到工程所在的文件夾里。然后在工程的工作區(qū)選擇Project->AddtoProject->Files,將這兩個(gè)文件選擇加入。????之后,就可以在程序里應(yīng)用這個(gè)類(lèi)了。???首先在要用到數(shù)據(jù)庫(kù)的類(lèi)的頭文件里設(shè)一個(gè)該類(lèi)的對(duì)象,即加入代碼:ADOConnm_Ado;注意:記得要先在最前面加入#include"ADOConn.h"。???在應(yīng)用這個(gè)對(duì)象對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作之前,先對(duì)其初始化:?m_Ado.OnInitADOConn(strConnect);其中strConn
5、ect即為上面獲取的連接字符串。???若要獲取數(shù)據(jù)庫(kù)中的部分記錄集,用m_Ado.GetRecordSet(strSql);其中strSql中存放查詢語(yǔ)句,查詢結(jié)果存放于m_Ado.m_pRecordset中,然后可用GetCollect()函數(shù)挨個(gè)獲取所有符合條件的記錄的各個(gè)字段的值。用完后記得用m_Ado.m_pRecordset.Close()關(guān)閉記錄集。??添加、修改、刪除操作,均用?m_Ado.ExecuteSQL(strSql);語(yǔ)句完成。???此外,若同時(shí)需要多種記錄集,則還需在要用到數(shù)據(jù)庫(kù)的類(lèi)的頭文件
6、里添加記錄集的對(duì)象,即_RecordsetPtrm_pRecordset;m_pRecordset在用之前也需初始化,初始化語(yǔ)句為:?m_pRecordset.CreateInstance(__uuidof(Recordset));,同樣的,每回記錄集用完之后也得用Close()函數(shù)關(guān)閉。5.若在數(shù)據(jù)庫(kù)應(yīng)用程序編譯時(shí)遇到102個(gè)錯(cuò)誤,則可把Debug文件夾刪了重新編譯即可。ADOConn類(lèi)的頭文件:#if!defined(AFX_ADOCONN_H__2B491720_FA04_4800_B616_219E55ABE
7、A46__INCLUDED_)#defineAFX_ADOCONN_H__2B491720_FA04_4800_B616_219E55ABEA46__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000classADOConn:publicCObject{public:?//添加一個(gè)指向Connection對(duì)象的指針:?_ConnectionPtrm_pConnection;?//添加一個(gè)指向Recordset對(duì)象的指針:?_RecordsetPtrm_p
8、Recordset;?charerror[1024];public:?_ConnectionPtr&GetConnPtr()???{returnm_pConnection;}?_RecordsetPtr&GetRecoPtr()????{returnm_pRecordset;}public:?//事務(wù)回滾?BOOLRollbackTrans()