c++之連接數(shù)據(jù)庫教程_第1頁
c++之連接數(shù)據(jù)庫教程_第2頁
c++之連接數(shù)據(jù)庫教程_第3頁
c++之連接數(shù)據(jù)庫教程_第4頁
c++之連接數(shù)據(jù)庫教程_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、本教程是實現(xiàn)c+MFC連接ACCESS數(shù)據(jù)庫教程胡紹利前提介紹:我用的是VS2012編寫C+程序,ACCESS使用2003版本,測試數(shù)據(jù)庫為FACEDATA.MDF具體教程如下:1. 首先,新建MFC工程 ,取名字MyProgram2. 點擊下一步,知道出現(xiàn)以下界面,加應(yīng)用程序類型改為基于對話框3. 再點擊完成,即成功創(chuàng)建MFC工程4. 之后會生成如下頁面,為顯示框頁面。 你可以通過拖拽右邊工具欄的控件來添加控件。如果要查看顯示框界面的話,可以點擊資源試圖來查看,一般都是在左下角位置。5. 由于本教程是連接數(shù)據(jù)庫,所以,就簡單添加一個查找和插入的功能。加入控件Button 和 Edit con

2、trol6. 對于控件的操作,如創(chuàng)建連接數(shù)據(jù)庫的Button,可以點擊右鍵,選中屬性來修改控件信息,一般要改的信息有ID,caption 其他屬性需要的話,自己百度去。7. 修改完成后,再通過雙擊界面上的連接數(shù)據(jù)庫按鈕,來創(chuàng)建相應(yīng)的響應(yīng)函數(shù)8. 具體代碼定義在MyProgramDlg.h中上面就是幾個BUTTON的響應(yīng)函數(shù)和EDIT CONTROL的VALUE的值。具體函數(shù)稍后會有詳細。9. 當(dāng)控件都設(shè)置完成后,如圖10. 接下來具體講下如何實現(xiàn)數(shù)據(jù)庫的連接首先,點擊MyProgram.CPP 找到BOOL CMyProgramApp:InitInstance()函數(shù)AfxOleInit();

3、來初始化COM庫 ,因為數(shù)據(jù)庫連接是通過COM接口實現(xiàn)的同時在stdafx.h文件下,加如下代碼#import "C:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")#include <icrsint.h>具體含義,我也不是很清楚,忘了。不過,這個是必須的。另外,你看下import的路徑下是否有該文件,如果沒有的話,工程里面有,你添加到相應(yīng)路徑即可。11. 然后,就點到MyprogramDLG.H文件

4、先定義一個_ConnectionPtr m_pConnection; 12. 然后,找到連接數(shù)據(jù)Button的響應(yīng)函數(shù)void CMyProgramDlg:OnBnClickedConnet()加入如下代碼:/連接數(shù)據(jù)庫/HRESULT hr;tryhr = m_pConnection.CreateInstance("ADODB.Connection");/創(chuàng)建Connection對象if(SUCCEEDED(hr)hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

5、FaceData.mdb","","",adModeUnknown);/連接數(shù)據(jù)庫catch(_com_error e)/捕捉異常CString errormessage;errormessage.Format("連接數(shù)據(jù)庫失敗!rn錯誤信息:%s",e.ErrorMessage();AfxMessageBox(errormessage);/顯示錯誤信息return FALSE;備注:這兩處要加CString(CString 類似與string類型,不過有一定區(qū)別,是MFC里的)類型的地方,前面都要加_T(“”); 進行類型

6、轉(zhuǎn)換,這個對有些編譯器,如果沒有系統(tǒng)會報錯。成功連接數(shù)據(jù)庫之后,如圖所示:當(dāng)你成功做到這一步時,表示你已經(jīng)成功登錄數(shù)據(jù)庫,接下來就是對數(shù)據(jù)庫進行查找和插入操作。13. 首先,點擊MYPROGRAM.H 加入下列代碼:_RecordsetPtr m_pRecordset;/數(shù)據(jù)集連接_variant_t vUsername,vID,vFeature;/存放取出來的數(shù)據(jù)的變量14. 查找操作,點擊資源試圖中點擊查找按鈕,找對應(yīng)的響應(yīng)函數(shù)加入如下代碼:CString CFeature;tryCString strSQL;/strSQL.Format("SELECT * FROM FaceT

7、able where userid ='%s'",m_userID); / 有條件查找strSQL.Format(_T("SELECT * FROM FaceTable");m_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset->Open(_variant_t(strSQL), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdUnknown);int i = 0;while(m_pRe

8、cordset->EndOfFile = VARIANT_FALSE && i < 1 )/vFeature = m_pRecordset->GetCollect("feature");vFeature = m_pRecordset->GetCollect("feature");CFeature = vFeature;MessageBox(CFeature);m_pRecordset->MoveNext();i+;/選擇讀取前1個 測試用所以讀的少點catch(_com_error e)CString mes

9、sage;message.Format(_T("讀取數(shù)據(jù)庫失敗!n 錯誤信息為:%s"),e.Description();AfxMessageBox( message );/顯示錯誤信息具體顯示頁面:備注:strSQL.Format(_T("SELECT * FROM FaceTable"); 用來定義連接數(shù)據(jù)庫的哪個表和顯示的數(shù)據(jù)屬性m_pRecordset.CreateInstance 創(chuàng)建數(shù)據(jù)集m_pRecordset->Open打開數(shù)據(jù)集_variant_t(strSQL) 具體數(shù)據(jù)庫語言 ,要傳入數(shù)據(jù)庫m_pConnection.GetI

10、nterfacePtr() connection 指針 相當(dāng)于數(shù)據(jù)庫登錄的帳號其他幾個參數(shù)是讀取數(shù)據(jù)庫的方式,比如只讀或者可讀可寫,具體我也記不是很清楚,你自己百度下吧成功后,顯示圖片如下(這個是我數(shù)據(jù)庫里的數(shù)據(jù)):15. 到此,就實現(xiàn)了數(shù)據(jù)庫簡單查詢的功能。16. 接下來是數(shù)據(jù)庫插入功能,點擊MyPROGRAM.H文件 聲明一個void SaveData();函數(shù),具體實現(xiàn)具體數(shù)值的插入數(shù)據(jù)庫17. 在找到插入數(shù)據(jù)庫的響應(yīng)函數(shù),加入如下代碼:trym_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset->Open(&quo

11、t;SELECT * FROM FaceTable", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdUnknown);m_pRecordset->AddNew();/聲明要插入數(shù)據(jù)SaveData();catch(_com_error e)AfxMessageBox(e.Description();AfxMessageBox(e.ErrorMessage();return ;備注:前面兩句跟查詢一樣,都是要先創(chuàng)建數(shù)據(jù)集連接,m_pRecordset->AddNew();用來告

12、訴數(shù)據(jù)庫我要開始插入數(shù)據(jù),具體在SAVEDATA里面實現(xiàn)數(shù)據(jù)的插入18. SAVEDATA函數(shù)的實現(xiàn)if(!m_pRecordset->EndOfFile)m_pRecordset->PutCollect("userid",_T("0");m_pRecordset->PutCollect("username",_T("胡紹利");m_pRecordset->PutCollect("feature",_T("234234");m_pRecordset-&

13、gt;Update();/ 更新聲明,插入數(shù)據(jù)GetDlgItem(IDC_EDIT1)->SetWindowTextW(_T("插入成功");PutCollect代表插入的一個數(shù)據(jù)屬性 第一個參數(shù)表示在數(shù)據(jù)庫里面的屬性名字,第二個參數(shù)表示你要插入的數(shù)值。Update()表示我已經(jīng)把數(shù)據(jù)輸入完畢,數(shù)據(jù)庫可以接收數(shù)據(jù),來更新ACCESS數(shù)據(jù)庫了。GetDlgItem(IDC_EDIT1)->SetWindowTextW(_T("插入成功"); 這個是通過獲取對話框控件ID,這里是EDI CONTROL的ID,然后進行賦值給他,顯示插入成功。成功后,顯示圖片如下:19. 同時,還可以動態(tài)加入數(shù)據(jù)在SAVEDATA函數(shù)里加入如下代碼:CString s;_variant_t ss;GetDlgItem(IDC_EDIT1)->GetWindowTextW(s);/ 獲取 Edit CONTROl的值 ,并將其賦值給Sm_pRecordset->PutCollect("userid",_T("0");ss= s;/類型轉(zhuǎn)換m_pRecordset->PutCollect("username",ss);m_pRecordse

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論