<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">開發環境: VS2010,Microsoft ACCESS 2007</span>
網上太多資料,花了接近一週卻沒找到合適的,有這種那種錯誤,總結了一種能用的。
1、首先在stdafx.h文件中添加:
<span style="white-space:pre"> </span>//#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
<span style="white-space:pre"> </span>//上面的是坑爹的頭文件引入,看了很多資料才知道上面的是舊版的!!!應該引入下面這個文件
<span style="white-space:pre"> </span>#import "C:\Program Files\Common Files\System\ado\msado20.tlb" no_namespace rename("EOF","rsEOF")
#include <afxwin.h>
2、添加數據指針
<span> </span>/*<span style="font-family: Arial, Helvetica, sans-serif;">這兩個指針不太理解,基本認爲是連接數據庫和操作數據庫的指針,詳情可參考http://www.2cto.com/shouce/ado/ */</span><span></span><p><span style="white-space: pre;"> </span>_ConnectionPtr m_pConn;<span style="white-space: pre;"> </span>//<span style="font-family: Verdana;">該</span><span style="font-family: 宋體, 'MS Song'; line-height: 16px;">對象代表打開的、與數據源的連接。</span>
<span style="white-space: pre;"> </span>_RecordsetPtr m_pRst;<span style="white-space: pre;"> </span>//該<span style="font-family: 宋體, 'MS Song'; line-height: 16px;">對象表示的是來自基本表或命令執行結果的記錄全集。 </span></p>
3、在CXXDlg.CPP的init函數中做一些初始化
<span style="white-space:pre"> </span>CoInitialize(NULL);<span style="white-space: pre;"> </span>
<span> //<span style="color: rgb(51, 51, 51); font-family: arial; font-size: 13px; line-height: 20.020000457763672px;">用來告訴 Windows以單線程的方式創建com對象</span>
<span style="white-space: pre;"> </span>m_pConn.CreateInstance(__uuidof(Connection));
<span style="white-space: pre;"> </span>m_pRst.CreateInstance(__uuidof(Recordset));
<span style="white-space: pre;"> </span>m_pConn->CursorLocation = adUseClient; //設置遊標類型</span>
<span style="white-space:pre"> </span>m_pConn->Open("Provider=Microsoft.Ace.OleDb.12.0;Data Source=Library.mdb;Persist Security Info=False","","",adModeUnknown);
<span style="white-space:pre"> </span>//ACCESS2007版本是12.0版本
4、初始化調試沒有出錯,畫個簡單界面:
從上往下是m_user,m_age,m_sex三個編輯框
添加成員變量:
5、初始化基本完畢,由於常用的是調用ACCESS內容,所以這裏只有讀取方式:
<span> HRESULT hr;
<span style="white-space:pre"> </span>UpdateData();
<span style="white-space:pre"> </span>int i=0;
<span style="white-space:pre"> </span>CString tmp;
<span style="white-space:pre"> </span>tmp.Format("select * from [Library] where UserName = '%s'",m_user);
//<span style="white-space:pre"> </span>hr=m_pRst->Open("select * from [Library]",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);</span> 這行用於普通全部查詢
<pre name="code" class="cpp"><span> hr=m_pRst->Open((const _variant_t)(tmp),m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);<span> </span>
<span> </span>if(hr == S_OK)
<span> </span>{
<span> </span>CString tmp=m_age;
<span> </span> while(!m_pRst->rsEOF)
<span> </span> {
<span> </span> m_user = m_pRst->GetCollect("UserName");
<span> </span> m_age = m_pRst->GetCollect("Age");
<span> </span> m_sex = m_pRst->GetCollect("Sex");
<span> </span> m_pRst->MoveNext();
<span> </span>i=1;
<span> </span>UpdateData(FALSE);
<span> </span>}
<span> </span>}
<span> </span>if(i==0)MessageBox("找不到對象!");
//<span> </span>m_pRst->Update();
<span> </span>m_pRst->Close();</span>
運行之後,顯示:
達到需求!
有空會回去找關於插入數據,嘗試了很多操作,感覺有可能是權限問題,暫時擱置。