<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>
运行之后,显示:
达到需求!
有空会回去找关于插入数据,尝试了很多操作,感觉有可能是权限问题,暂时搁置。