我有个程序用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位系统下调试要做些设置希望高手指点一二?

解决方案 »

  1.   

    首先,是cpu必须是64位的。
    其次,VS2005安装时,必须有x64选项。
    第三,项目配置属性必须是x64。
    你可以先写一个不用数据库的64位程序看,以上是否达到。
    这些解决了,后面的链接sql,等我有空,把代码贴给你看,或者你贴出来,给我看。
      

  2.   

    机器和系统都是64位的,DELL品牌机,CPU是至强的。
    VS装64位了。项目配置属性也用64了。
    我在上面的测试中也做过了,32位的程序没有任何问题。但换成64位后,就连不上了。
    代码回头帖吧。很乱。但在32位绝对没问题。用64位编译时我还特意把编译选项改成4级警告了,编译时只剩些没什么关系的warning。
      

  3.   

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

  4.   

    用的是http://www.codeproject.com/KB/database/caaadoclass1.aspx上的这个ADO类。记得是报个No provider and no default provider specified。的错。
    现在没在64位机器那,具体也记不详细了。
      

  5.   

    哦,对了,64位系统是XP的。会不会XP64位下没相应驱动呢?当时也忘了在WIN7,64位试试
      

  6.   

    有可能,回头试一下。另外刚才看到一篇文章
    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联系与区别的盲就更感激了
      

  7.   

    我用的是Windows Server 2003 64bit中文版,vs2005,sql2005毫无问题。
      

  8.   

    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
      

  9.   

    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"谨以记之,先不结帖.
      

  10.   

    connstr="provider=msdasql;dsn=mydsn;uid=sa;pwd=123"
    这样不行,试过了,寻求解决方法
      

  11.   

    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天时间。搜索能力还是不行...