64位系统使用ado的问题

nwao7890 2010-08-19 08:24:39
我有个程序用VS2005+SQL开发的.
现在SQL部署在XP 32bit上.程序在64bit系统上.为了调试64上也装了VS2005.由于程序需要使用3G以上内存,所以将程序编译为64位版本(target machine:x64),这就出问题了原来32bit的能连上,现在64的连不上了.一样的代码,编出来的32和64两个版本.都是用的UNICODE

调试发现在ADO的connectionPTR->OPEN的时候发生异常.不知道什么原因.
想问下在64bit下怎么解决这个ado的问题呢?

还有个问题是,好像调试时代码在异常后,在catch中直接到了最后一行,前面几行没有运行就过去了...这个还不清楚是哪的事,上网查了查说是在64位系统下调试要做些设置希望高手指点一二?
...全文
1456 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkmsweind 2011-09-19
  • 打赏
  • 举报
回复
1. 下载运行 AccessDatabaseEngine_x64.exe

(http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en)


2. 改变连接字符串:

Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=mdb.mdb;uid=admin;pwd=password;

我用这个方法试验成功,呵呵,用了2天时间。搜索能力还是不行...
wkmsweind 2011-09-16
  • 打赏
  • 举报
回复
connstr="provider=msdasql;dsn=mydsn;uid=sa;pwd=123"
这样不行,试过了,寻求解决方法
nwao7890 2010-08-31
  • 打赏
  • 举报
回复
To resolve this issue, you must install the 64 bit MSDASQL provider and explicitly designate it in your ADODB.connection.
1 .Download and install 64-Bit OLEDB Provider for ODBC (MSDASQL).
2 .Specify your ODBC connection in your ADO connection as follows:

connstr="provider=msdasql;dsn=mydsn;uid=sa;pwd=123"

谨以记之,先不结帖.

nwao7890 2010-08-31
  • 打赏
  • 举报
回复
This error occurs because no default provider is designated on a 64 bit platform. On 32bit platforms, MSDASQL is designated as the default provider and hence you will not run into this problem.
http://support.microsoft.com/kb/971987/en-us
需要手工指定provider=msdasql
hztj2005 2010-08-21
  • 打赏
  • 举报
回复
我用的是Windows Server 2003 64bit中文版,vs2005,sql2005毫无问题。
hztj2005 2010-08-20
  • 打赏
  • 举报
回复
首先,是cpu必须是64位的。
其次,VS2005安装时,必须有x64选项。
第三,项目配置属性必须是x64。
你可以先写一个不用数据库的64位程序看,以上是否达到。
这些解决了,后面的链接sql,等我有空,把代码贴给你看,或者你贴出来,给我看。
nwao7890 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 job82824 的回复:]

引用

_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。


会不会是因为这个原因?关注下
[/Quote]
有可能,回头试一下。另外刚才看到一篇文章
http://blogs.msdn.com/b/sqlcrd/archive/2008/04/21/64-oledb-provider-for-odbc-msdasql.aspx
MSDASQL是一个桥接OLEDB与ODBC的组件,使得基于OLEDB和ADO(内部使用OLEDB)的应用程序可以操作基于ODBC驱动程序的数据源。MSDASQL随着Windows操作系统发布,而Windows Server 2008和Windows Vista SP1是最早内置64位版本MSDASQL的操作系统。
这句话很值得思考。

我对ADO,OLEDB,ODBC之间的关系不是很清楚。不知道他意思是不是ADO在XP 64位上没有相应驱动。
PS:哪位帮我扫扫ADO,OLEDB,ODBC联系与区别的盲就更感激了
nwao7890 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 nwao7890 的回复:]

引用 4 楼 oyljerry 的回复:

Open出错以后,try catch捕获一下异常,查看错误信息,看返回什么..

用的是http://www.codeproject.com/KB/database/caaadoclass1.aspx上的这个ADO类。记得是报个No provider and no default provider specified。的错。
现在没在64位机……
[/Quote]
哦,对了,64位系统是XP的。会不会XP64位下没相应驱动呢?当时也忘了在WIN7,64位试试
job82824 2010-08-20
  • 打赏
  • 举报
回复
[Quote=]

_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。

[/Quote]
会不会是因为这个原因?关注下
nwao7890 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]

Open出错以后,try catch捕获一下异常,查看错误信息,看返回什么..
[/Quote]
用的是http://www.codeproject.com/KB/database/caaadoclass1.aspx上的这个ADO类。记得是报个No provider and no default provider specified。的错。
现在没在64位机器那,具体也记不详细了。
oyljerry 2010-08-20
  • 打赏
  • 举报
回复
Open出错以后,try catch捕获一下异常,查看错误信息,看返回什么..
nwao7890 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hztj2005 的回复:]

首先,是cpu必须是64位的。
其次,VS2005安装时,必须有x64选项。
第三,项目配置属性必须是x64。
你可以先写一个不用数据库的64位程序看,以上是否达到。
这些解决了,后面的链接sql,等我有空,把代码贴给你看,或者你贴出来,给我看。
[/Quote]
机器和系统都是64位的,DELL品牌机,CPU是至强的。
VS装64位了。项目配置属性也用64了。
我在上面的测试中也做过了,32位的程序没有任何问题。但换成64位后,就连不上了。
代码回头帖吧。很乱。但在32位绝对没问题。用64位编译时我还特意把编译选项改成4级警告了,编译时只剩些没什么关系的warning。

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧