原文链接地址: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数据库的问题解决的更多相关文章

  1. ADO访问Access数据库错误解决心得随笔

    最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...

  2. 非域环境下使用证书部署数据库(SqlServer2008R2)镜像

    非域环境下使用证书部署数据库(SqlServer2008R2)镜像 前言 部署数据库镜像一般有两种方式域环境下部署http://liulike.blog.51cto.com/1355103/33918 ...

  3. php 链接access数据库

    php链接access数据库代码 <?php $odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".realpath ...

  4. vs2010 C#链接 ACCESS数据库

    ACCESS数据库,有2003.2007版本,不同的版本,链接字符也不同,现把代码黏贴如下: 1.ACCESS2003(.mdb): private void Form1_Load(object se ...

  5. MFC通过ADO操作Access数据库

    我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...

  6. 直接通过ADO操作Access数据库

    我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...

  7. 在linux环境下用中文查询数据库

    1.用SQL在linux环境下,查询语句的中文条件,查不到结果. mysql -h ***.***.***.*** -P 3303 -uroot -p*********** -D boztax -e ...

  8. SQLServer 跨服务器链接 Access数据库

    最近做了一个链接Access的实例,记录一笔. 如果你的Access数据库文件和SQLServer数据库在同一服务器上,可直接在数据库手动创建数据库链接 步骤如下: 打开新建链接,给你的链接起一个顺眼 ...

  9. golang ODBC 访问access数据库(问题解决之心理路程)

    最近项目需要,需要操作access,以前是用VC++ OLE访问,网络用ACE库,感觉很庞大...决定用go试试 网上用的最多的就是这个https://github.com/weigj/go-odbc ...

随机推荐

  1. localhost/127.0.0.1/本机IP的区别以及端口号

    端口号: http请求默认的端口是:80 PHPstudy中的端口号: Apache服务器的端口是:80 MySQL数据库的端口是:3306 PHP项目端口是:9000 禅道中的端口号: Apache ...

  2. 原生WebGL场景中绘制多个圆锥圆柱

    前几天解决了原生WebGL开发中的一个问题,就是在一个场景中绘制多个几何网格特征不同的模型,比如本文所做的绘制多个圆锥和圆柱在同一个场景中,今天抽空把解决的办法记录下来,同时也附上代码.首先声明,圆柱 ...

  3. Cesium开发添加entity无法显示

    无代码报错,js查询entity数量发现确实添加进去了.但是在底图上就是不显示. 有可能是跨域产生的问题.打开开发者工具Console栏.查看是不是存在跨域错误. 解决跨域后entity正常加载.

  4. Scrum立会报告+燃尽图(十月二十一日总第十二次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...

  5. c# Application.run和form.show区别

    Application.run(form):在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见. form.show() :使指定窗体可见: 参照:https://blog.csdn.net/ ...

  6. vue+vue-video-player实现弹窗播放视频

    将视频播放器标签放在对话框标签中,实现弹窗 template 中 <el-dialog :visible.sync="dialogVisible" width='680px' ...

  7. MacOS下安装BeautifulSoup库及使用

    BeautifulSoup简介 BeautifulSoup库是一个强大的python第三方库,它可以解析html进行解析,并提取信息. 安装BeautifulSoup 打开终端,输入命令: pip3 ...

  8. asp.net如何实现跟踪检查用户知否查看了邮件。

    有时我们有这样一种需求场景,我们给很多用户发了邮件,需要一个反馈,用户是否查看了我们发送的邮件,百度了以下果然有方案. 我总结实践了下这个过程,同时有自己的一点使用感受.记录下希望对你有帮助. 有人想 ...

  9. android入门 — Service

    Service完全在后台运行,没有用户界面.使用的时候先创建Service子类,然后在AndroidManifest.xml中进行注册,同时可以通过<intent-filter.../>进 ...

  10. eclipse生成jar包 注意事项!

    原文转自:http://www.cnblogs.com/zhangfei/archive/2013/01/22/2871075.html 第一:普通类导出jar包,我说的普通类就是指此类包含main方 ...