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 ...
随机推荐
- 【转】CentOS下MySQL忘记root密码解决方法
原文转自:http://www.cnblogs.com/sbaicl/articles/3132010.html 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在 ...
- 关于Python的装饰器(1)
Python的装饰器的概念,一直有点微妙.之前在StackOverflow上看过一篇感觉说明的很清楚的介绍: *A decorator must accept a function as an arg ...
- Linux☞权限数字表示法
权限数字表示法: 1.Linux有三种访问权限: a.可读:r(Read) b.可写:w(Write) c.可执行:x(eXcute) 2.简单说说如何去看该文件的访问权限呢?一般我们执行命令,查看目 ...
- Vue-lazyload 的使用
Vue 项目使用 Vue-lazyload 做图片懒加载. 下载 下载 Vue-lazyload 的包NPM包 npm install vue-lazyload --save 引入 在项目 main. ...
- Scrum立会报告+燃尽图(Beta阶段第二周第二次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2410 项目地址:https://coding.net/u/wuyy694 ...
- 冲刺ing-4
第四次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 Leangoo的看板截图,燃尽图 蔺皓雯 编写博客,学习后端设计 蔡晨旸 学习后端设计 曾茜 后端设计 鲁婧楠 服务器建构 杨池宇 学习后 ...
- 《linux内核与分析》第三周
20135130王川东 实验:构造一个简单的Linux系统的MenuOS 命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd root ...
- Mininet介绍及安装
什么是Mininet Mininet是由一些虚拟的终端节点(end-hosts).交换机.路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美. Mininet可以很方 ...
- 18软工实践-第八次作业(课堂实战)-项目UML设计(团队)
目录 团队信息 分工选择 课上分工 课下分工 ToDolist alpha版本要做的事情 燃尽图 UML 用例图 状态图 活动图 类图 部署图 实例图 对象图 时序图 包图 通信图 贡献分评定 课上贡 ...
- HDU 5228 ZCC loves straight flush 暴力
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5228 bc(中文):http://bestcoder.hdu.edu.cn/contests ...