在64位机子上,通过ADO方式连接sql server2008数据库

时间:2021-04-10 21:50:26
我用 VC2010,通过ADO方式连接sql server2008数据库,出现异常(win7 64位),32位的话就没问题,该怎么办?

5 个解决方案

#1


什么异常信息?写清楚点

#2


或者加异常捕获看是什么错误
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}

#3


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll

#4


连接字符串中,把端口后面的数据库实例名去掉就可以连接,奇怪了,XP下正常。

#5


是不是WIN7 sp1编译,WIN7运行,这种系统编译版本比运行版本高的问题?
解决办法如下: 
1、下载: 
http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_i386.tlb 

2、相关代码导入修改为: 
把下载的msado60_Backcompat_i386.tlb 改为msadmsado60_Backcompat.tlb
#import "msadmsado60_Backcompat.tlb" no_namespace rename 
("EOF","EndOfFile") 

#1


什么异常信息?写清楚点

#2


或者加异常捕获看是什么错误
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}

#3


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll

#4


连接字符串中,把端口后面的数据库实例名去掉就可以连接,奇怪了,XP下正常。

#5


是不是WIN7 sp1编译,WIN7运行,这种系统编译版本比运行版本高的问题?
解决办法如下: 
1、下载: 
http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_i386.tlb 

2、相关代码导入修改为: 
把下载的msado60_Backcompat_i386.tlb 改为msadmsado60_Backcompat.tlb
#import "msadmsado60_Backcompat.tlb" no_namespace rename 
("EOF","EndOfFile")