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>

 

运行之后,显示:


达到需求!


有空会回去找关于插入数据,尝试了很多操作,感觉有可能是权限问题,暂时搁置。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值