x64 win64编译环境下ADO链接Access数据库的问题解决
原文链接地址:https://blog.csdn.net/HW140701/article/details/71077579
Win32编译环境下,用ADO数据库连接Access数据库一般都不会报错,但是最近由于项目上的需要,程序需要编译成64位以便申请到更多的使用内存空间,当把编译方式从Win32改为x64的时候,突然出现了数据库连接出现未知错误,这时候就猜到了应该是编译环境的改变导致了数据库连接出错,在参考了其他大神的解决方案之后,终于解决了这个问题,我的环境为Win7 64+MFC(VS2010)+ADO+Access2007。
参考链接如下:
http://blog.csdn.net/sundacheng1989/article/details/17925431
http://www.cnblogs.com/bluedoctor/p/3925871.html
http://blog.csdn.net/kirawoo/article/details/39032387
http://blog.csdn.net/u010891996/article/details/12522911
解决方法:
步骤1:去官网下载AccessDatabaseEngine_64.exe,下载链接
https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
或者直接去我的下载频道进行下载
http://download.csdn.net/detail/hw140701/9830665
骤2:这一个步骤是强制安装刚刚下载的AccessDatabaseEngine_64.exe,如果不强制安装的话,它会要求你卸载你所安装的全部的Office软件,那多麻烦!!!,所以选择忽略提醒,强制安装,
打开cmd.exe,在命令行输入“你的AccessDatabaseEngine_64.exe的存放路径” /passive,比如我的就是"F:\软件\我下载的\Windows数据库编程\AccessDatabaseEngine_64.exe" /passive强制安装,输完这个命令就等待安装完成。
步骤3:在安装完上述引擎之后,你需要修改一下你的代码,在win32编译环境下我们的数据库的链接字符串是
m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);
如果你需要在x64的编译环境环境下连接Access数据库你需要修改为
m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);
为了更好的适配不同的编译环境,我将我的代码修改为
//初始化COM,创建ADO连接对象实例
getsample_pConnection.CreateInstance(__uuidof(Connection));
getsample_pRecordset.CreateInstance(__uuidof(Recordset));
//构造数据库连接字符
CString m_connection;
#if defined _WIN64//如果是64位程序
m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);
#elif defined _WIN32//如果是32位程序
m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);
#endif try
{
//使用Open方法连接数据库
getsample_pConnection->Open(_bstr_t(m_connection),"","",adModeUnknown);
//以下两行用来设置状态栏的提示信息
}
catch(_com_error e)//捕捉数据库打开过程中的错误信息
{ CString tempErrorMessage;
tempErrorMessage.Format("数据库连接失败,错误原因为:%s",e.ErrorMessage());
AfxMessageBox(tempErrorMessage)
}
当是64位程序的时候就为
m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);
当是32位程序的时候就为
m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);
然后重启一下PC,应该就可以编译成功了。
x64 win64编译环境下ADO链接Access数据库的问题解决的更多相关文章
- ADO访问Access数据库错误解决心得随笔
最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...
- 非域环境下使用证书部署数据库(SqlServer2008R2)镜像
非域环境下使用证书部署数据库(SqlServer2008R2)镜像 前言 部署数据库镜像一般有两种方式域环境下部署http://liulike.blog.51cto.com/1355103/33918 ...
- php 链接access数据库
php链接access数据库代码 <?php $odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".realpath ...
- vs2010 C#链接 ACCESS数据库
ACCESS数据库,有2003.2007版本,不同的版本,链接字符也不同,现把代码黏贴如下: 1.ACCESS2003(.mdb): private void Form1_Load(object se ...
- MFC通过ADO操作Access数据库
我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...
- 直接通过ADO操作Access数据库
我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...
- 在linux环境下用中文查询数据库
1.用SQL在linux环境下,查询语句的中文条件,查不到结果. mysql -h ***.***.***.*** -P 3303 -uroot -p*********** -D boztax -e ...
- SQLServer 跨服务器链接 Access数据库
最近做了一个链接Access的实例,记录一笔. 如果你的Access数据库文件和SQLServer数据库在同一服务器上,可直接在数据库手动创建数据库链接 步骤如下: 打开新建链接,给你的链接起一个顺眼 ...
- golang ODBC 访问access数据库(问题解决之心理路程)
最近项目需要,需要操作access,以前是用VC++ OLE访问,网络用ACE库,感觉很庞大...决定用go试试 网上用的最多的就是这个https://github.com/weigj/go-odbc ...
随机推荐
- Eclipse 使用过程中的问题及解决方法
1.Eclipse中java文件和jsp字体大小设置 1.更改所有文件的字体显示大小过程: Window->preferences->General->Appearance-> ...
- Linux 内核3.10.5 专场
今天本人十分靠谱地下载了linux 内核的3.10.5版本,这个版本是最新的稳定版. 听路飞大虾(哪个路飞?就是那个戴草帽的橡胶小伙,航海很多时候都很空闲的,于是最近他也开始研读linux 内核了.) ...
- [转载]A cycle was detected in the build path of project
解决Eclipse中Java工程间循环引用而报错的问题 如果我们的项目包含多个工程(project),而它们之间又是循环引用的关系,那么Eclipse在编译时会抛出如下一个错误信息: “A cycle ...
- info信息的获取
一.绝对路径(_SERVER[“SCRIPT_FILENAME”])这个是最常用,也是最有效的一个办法,找到phpinfo()页面可以直接找到网站的绝对路径,对于写shell和信息搜集是必不可少的.二 ...
- 理解学习Springboot(一)
Springboot有何优势呢,网上一大推,这里就不写了. 一.配置maven 1.在maven官网下载maven,http://maven.apache.org/download.cgi 2.将下载 ...
- sql server 按月对数据表进行分区
当某张数据表数据量较大时,我们就需要对该表进行分区处理,以下sql语句,会将数据表按月份,分为12个分区表存储数据,废话不多说,直接上脚本: use [SIT_L_TMS] --开启 XP_CMDSH ...
- LeeCode_01_Two sum
Two Sum Given an array of integers, return indices of the two numbers such that they add up to a spe ...
- jsp 修改页面感受
什么事情只有做过才知道. 最近在负责官网的开发,有一些页面需要和前端商量着修改,但是看到jsp那繁杂的标签和各种css,js混到一起,实在觉得jsp已经是一种落后的技术了,在修改过程中频频出现各种格式 ...
- 【第二章】MySQL数据库基于Centos7.3-部署
一.MySQL数据库的官方网址: https://www.mysql.com/ https://www.oracle.com/ http://dev.mysql.com/doc/refman/5.7/ ...
- charles 在mac下 抓取 https包
1. 打开charles --> help --> SSL proxying --> install charles root certificate 2. 在弹出的添加证书窗口中 ...