MFC中查詢ACCESS表格

<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>



運行之後,顯示:


達到需求!


有空會回去找關於插入數據,嘗試了很多操作,感覺有可能是權限問題,暫時擱置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章