积极答复者
64bitWinXP下使用ADO的问题

问题
-
情况如下:32bit的WinXP上装了SQL 2005 EXPRESS,64bitWinXP上装了VS2005,在这上面开发了个访问数据库的小程序,访问32位XP上的数据库。用32bit编译后,ado访问数据库没有问题。但是同样的代码换成X64编译后,ADO就无法打开链接。
在网上查了一些资料,http://blogs.msdn.com/b/sqlcrd/archive/2008/04/21/64-oledb-provider-for-odbc-msdasql.aspx看到这一往篇后,我很疑惑,64bitWinXP上没有64位的ADO可以使用吗?我的问题是哪的事,是不是要换到Win7才行(我还没有在Win7 64bit版上试,先来请教下)
答案
-
你的问题看上去和这篇KB一样:http://support.microsoft.com/kb/971987,原因是在64位的2003(XP)下面有默认的Provider,如果你要用ODBC的话,需要指定Provider为MSDASQL
把connection string写成Provider=MSDASQL;Server=192.168.0.2;..."试试
Shuhai Shen - I love programming, travel and photographing. Welcome to my blog: http://leonax.net- 已标记为答案 Min-Hong Tang - MSFT 2010年8月27日 2:24
全部回复
-
请问无法打链接时,错误信息是什么?
如果可能的话,能否贴一下出错位置附近的代码,谢谢
另外,ADO的问题可以到SQL Server的版问,那里数据库的专家比较多……
Shuhai Shen - I love programming, travel and photographing. Welcome to my blog: http://leonax.net -
出差两天,刚回来.
我仔细看了一下.又写了个小程序试验,代码很简单就是一个_ConnectionPtr m_Conn;
然后直接调用open时,连接串写成"DSN=test;uid=sa;pwd=123"或是"Driver={SQL SERVER};server=192.168.0.2;Database=MyDB;User id=sa;password=123"都会报错. 代码是800A0EA9,说是Provider is not specified and there is no
designated default provider, msg = unknown error只要把连接串换成"Provider=SQLOLEDB;Data Source=192.168.0.2Initial Catalog=db;User ID=username;Password=password;"就没有问题了.
但我不明白这是为什么?
-
你的问题看上去和这篇KB一样:http://support.microsoft.com/kb/971987,原因是在64位的2003(XP)下面有默认的Provider,如果你要用ODBC的话,需要指定Provider为MSDASQL
把connection string写成Provider=MSDASQL;Server=192.168.0.2;..."试试
Shuhai Shen - I love programming, travel and photographing. Welcome to my blog: http://leonax.net- 已标记为答案 Min-Hong Tang - MSFT 2010年8月27日 2:24