posted at 2016-05-05 23:25:02 +0000
我选的工程实践题目要求用数据库。在网上查了查MFC使用数据库,发现大多数都是在VC6.0的情况下使用,用的也是Access2010或者之前的版本。而我的环境是VS2015 + Access 2013。所以写下这篇文章备用。
我们讨论的是连接到已经存在的Access 2013数据库。
首先我们需要在MFC对话框的stdafx.h头文件中包含afxdb.h文件,该文件提供了数据库操作
//下面这句代码要加在
#include <afxcontrolbars.h> // 功能区和控件条的 MFC 之下
//添加数据库支持
#include <afxdb.h> //新加入头文件,用于CDatabase类
然后,我们需要导入msado15.dll
,该文件与数据库参数有关,为ADO组件,用于连接数据库
//msado15.dll我是复制到了项目文件夹下
//它的默认路径应该是C:\Program Files\Common Files\System\ado
#import "msado15.dll" no_namespace rename("EOF","adoEOF")
接下来就是连接数据库了。
我们先声明 2个变量,一个是ConnectionPtr
类型,另外一个是RecordsetPtr
类型。
ConnectionPtr
是用来connection对象,主要用于数据库的连接,SQL命令执行相关操作
RecordsetPtr
是用来是用来对返回的记录集进行操作的
ConnectionPtr m_pConnection; //连接access数据库的链接对象
RecordsetPtr m_pRecordset; //记录集对象
//连接数据库
try {
CoInitialize(NULL);
m_pConnection = _ConnectionPtr(__uuidof(Connection));
m_pConnection - > ConnectionString = _T("Provider=Microsoft.ACE.OLEDB.12.0;\ DataSource=X:\\MetroData\\StationData.accdb;"); //这里照着老版的书上写
//Provider = Microsoft.Jet.OLEDB .4 .0;
//DataSource= MyAccess.mdb是不对的,这样写只适合2007版以前的access,且路径里面的\必须改成
m_pConnection - > Open("", "", "", adConnectUnspecified);
} catch (_com_error e) {
AfxMessageBox(_T("数据库连接失败!"));
return FALSE;
}
如果提示 Microsoft.ACE.OLEDB.12.0 提供者未注册 错误,请下载Microsoft Access Database Engine 2010 Redistributable
如果连接失败,你可能需要在MFC对话框的App类的构造函数CXXX::CXXXApp()
中添加AfxOleInit();
用于初始化。
© kanch
→ zl AT kanchz DOT com
last updated on 2022-07-27 01:57:54 +0000