




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)派遺合同范本
- 養(yǎng)殖社購銷合同范本
- 借條正規(guī)合同范本
- 公司網(wǎng)絡(luò)線路維修合同范本
- 加工蔬菜采購合同范本
- 利益聯(lián)結(jié)機制合同范本
- 出租專用桌子合同范本
- 與社區(qū)合作社簽訂合同范例
- 二手房按揭買賣合同范本
- 公司許可經(jīng)營合同范本
- 2023年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招面試模擬試題及答案解析
- 內(nèi)科學(xué)講義(唐子益版)
- 五年級上冊數(shù)學(xué)《比的應(yīng)用》專項訓(xùn)練課件
- 蘇科版五年級下冊《勞動》全一冊全部課件(共11節(jié))
- GB/T 7260.40-2020不間斷電源系統(tǒng)(UPS)第4部分:環(huán)境要求及報告
- GB/T 3199-2007鋁及鋁合金加工產(chǎn)品包裝、標(biāo)志、運輸、貯存
- GB/T 19845-2005機械振動船舶設(shè)備和機械部件的振動試驗要求
- GB 9706.14-1997醫(yī)用電氣設(shè)備第2部分:X射線設(shè)備附屬設(shè)備安全專用要求
- 變革型領(lǐng)導(dǎo)問卷TLQ
- 測繪安全生產(chǎn)專題培訓(xùn)課件
- 診斷學(xué)-緒論-課件
評論
0/150
提交評論