Access是微软在Office中集成的一种桌面式的数据库系统,在一些规模不大的数据库应用中,使用Access还是比较方便的。
在使用VS与Access编程的时候,还是有一些问题要注意,这里记录备查。本人使用的VS2015,C++语言,Access2016数据库。
1 环境设置
要在VS应用程序中使用ADO访问数据库,需要在stdafx.h的最后加上以下语句:
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
2 连接字符串
对于目前的Access版本,连接字符串为:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBPath
以上语句中的DBPath要替换成你自己数据库文件的真正路径,例如
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\MyDBApp\\Data\\Test.accdb
实际上,这个字符串可以用VS的工具来构建,方法是:
在VS2015中,菜单<工具>——<连接到数据库>,弹出<选择数据源>窗口,选择<Microsoft Access 数据库文件>,点击<继续>按钮。
在弹出的<添加连接>页面,数据库文件名项目浏览找到你的数据库文件,之后可以点击<测试连接>按钮,正常应该弹出提示"测试连接成功",如果这个测试通不过,需要检查其它问题。
测试连接成功后,点击<高级>按钮,弹出<高级属性>页面,最下面一行即显示了连接字符串,如下图所示,拷贝下来可以放到程序中直接用。
3 连接数据库
参照以下语句,即可正确连接数据库
头文件声明:
_ConnectionPtr m_pConnection;//连接access数据库的链接对象
_RecordsetPtr m_pRecordset;//结果集对象
实现文件:
bool CMyDB::OpenConn(char* dbname)
{
try {
CoInitialize(NULL);
if (dbname != NULL)
sprintf_s(g_pDBName, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s", dbname);
m_pConnection.CreateInstance("ADODB.Connection"); //创建连接对象实例
_bstr_t strConnect = g_pDBName;
m_pConnection->Open(strConnect, "", "", adModeUnknown); //打开数据库
}
catch (_com_error e) {
AfxMessageBox(e.Description());
return false;
}
return true;
}
4 程序配置
不能用X64配置,如果用X64配置,连接数据库时不成功,提示:“未找到提供程序,该程序可能未正确安装”。改为用WIN32配置即可。
附:几个备忘的技巧
1) 备忘的SQL语句
以下是经常用到,但是总记不住的语句,这里记下。
取得刚刚添加的记录的编号的语句
select @@identity
2) 字符串内容里包含单引号(’)的处理
字符串里包含单引号(’)时,作为查询条件或插入值时会出错,此时把字符串里的单引号(’)替换成双单引号(’’)即可。