資源描述:
《mfc下使用ado連接數(shù)據(jù)庫》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、MFC下使用ADO讀寫Access數(shù)據(jù)庫實(shí)例一、原型系統(tǒng)描述2二、數(shù)據(jù)庫表設(shè)計(jì)2三、數(shù)據(jù)庫編程21.新建MFC基于對話框項(xiàng)目22.用#import指令引入ADO類型庫23.創(chuàng)建數(shù)據(jù)庫操作類CADODatabase33.1為CADODatabase添加兩個成員變量33.2添加OpenDatabase函數(shù)33.3添加CloseDatabase函數(shù)43.4添加Select函數(shù)53.5添加Execute函數(shù)6四、MFC界面編程61.在對話框中添加控件62.在程序啟動時初始化列表框,并連接數(shù)據(jù)庫72.1初始化列表框72.2連接數(shù)據(jù)庫73.添加查詢功能84.添
2、加新增記錄功能9五、使用DatagridActiveX控件101.添加Datagrid控件102.創(chuàng)建數(shù)據(jù)庫113.創(chuàng)建數(shù)據(jù)庫操作類CADODatabase124.使用Datagrid124.1綁定數(shù)據(jù)源124.2添加記錄13說明:本文以“學(xué)生信息管理”系統(tǒng)雛形為例子,介紹在MFC下如何使用ADO連接數(shù)據(jù)庫編程,并給出示例代碼。下面內(nèi)容第一至四節(jié)介紹如何采用ADO連接數(shù)據(jù)庫、關(guān)閉數(shù)據(jù)、執(zhí)行sql語句及如何用另一種方式執(zhí)行常用的select語句。第五節(jié)介紹如何使用Datagrid控件:建立_RecordsetPtr對象與Datagrid控件之間的綁定
3、,通過改變_RecordsetPtr對象的內(nèi)容更新數(shù)據(jù)庫表的記錄。第一至四節(jié)的內(nèi)容請參考代碼“CtrlListDatabase.rar”,第五節(jié)內(nèi)容請參考“Datagrid.rar”請同學(xué)們結(jié)合ADO.NET課程內(nèi)容自主學(xué)習(xí),將所學(xué)到的技術(shù)應(yīng)用到項(xiàng)目實(shí)訓(xùn)中。一、原型系統(tǒng)描述本程序?yàn)橐粋€學(xué)生信息管理系統(tǒng)雛形。程序界面如下圖左圖所示。用戶在姓名欄輸入查詢字段,列表框中列出查詢結(jié)果。如下圖右圖所示。用戶點(diǎn)擊新增記錄按鈕新增學(xué)生信息記錄。二、數(shù)據(jù)庫表設(shè)計(jì)建立Access文件test.mdb,創(chuàng)建student表,表中字段名稱、數(shù)據(jù)類型及各字段的說明設(shè)置如下
4、三、數(shù)據(jù)庫編程1.新建MFC基于對話框項(xiàng)目新建MFC基于對話框項(xiàng)目。本例中對項(xiàng)目命名為CtrlListDatabase。2.用#import指令引入ADO類型庫為了引入ADO類型庫,需要在項(xiàng)目的stdafx.h文件中加入如下語句:#import"C:ProgramFilesCommonFilesSystemadomsado15.dll"no_namespacerename("EOF","adoEOF")注意添加的位置在#endif//_AFX_NO_AFXCMN_SUPPORT之后1.創(chuàng)建數(shù)據(jù)庫操作類CADODatabase1.1為CAD
5、ODatabase添加兩個成員變量_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;其中m_pConnection是一個指向Connection對象的指針,通過它來連接數(shù)據(jù)庫。m_pRecordset是一個指向記錄集合的指針,從數(shù)據(jù)庫查詢得到的結(jié)果放在m_pRecordset中。1.2添加OpenDatabase函數(shù)功能:連接數(shù)據(jù)庫輸入:數(shù)據(jù)庫連接串strConnection(其含義見第四部分第二步中2.2的解釋)輸出:TRUE,如果成功連接數(shù)據(jù)庫,F(xiàn)ALSE,如果連接數(shù)據(jù)庫失敗BOOLCA
6、DODatabase::OpenDatabase(CStringstrConection){HRESULThr=::CoInitialize(NULL);//初始化COMif(!SUCCEEDED(hr))//初始化失敗{returnFALSE;}_bstr_tstrConnect(strConection);try{//創(chuàng)建Connection對象hr=m_pConnection.CreateInstance("ADODB.Connection");if(SUCCEEDED(hr)){//連接數(shù)據(jù)庫if(SUCCEEDED(m_pConnecti
7、on->Open(strConnect,"","",adModeUnknown))){returnTRUE;}}}catch(_com_errore){TRACE(_T("連接數(shù)據(jù)庫發(fā)生錯誤%s"),e.ErrorMessage());}returnFALSE;}上述代碼中,通過Connection對象的Open方法來進(jìn)行連接數(shù)據(jù)庫的,下面是該方法的原型:HRESULTConnection15::Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions);上述函
8、數(shù)中參數(shù)ConnectionString為連接字串;參數(shù)UserID是用戶名;參數(shù)Password是登陸密碼;在本例子中,