try
{
m_pConn-> CursorLocation=adUseClient; //游标类型
m_pConn->Open("Provider=SQLNCLI11;Initial Catalog=MSDataBase;Data Source=.\\SQLEXPRESS;","sa","rsd102",adModeUnknown);
m_pRs->Open("select * from tb_detect",_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
::AfxMessageBox(e.ErrorMessage());
}
Open的时候,在客户机器上异常退出,XP 32位,Win7 32位都试过,在外地出差呢,大家帮帮忙呀,网上搜索的问题都试了不行,服务器是SQL Server 2012
------解决思路----------------------
catch捕获下错误内容是什么先
------解决思路----------------------
0x800A0E7A 是表示ADO找不到指定的提供者,是不是权限不够?
------解决思路----------------------
数据库访问权限
------解决思路----------------------
win7开始,微软对应用程序的权限控制就很严格了,你的这个错误在网上是可以搜索到错误原因的,具体的原因还是你自己先去查查,然后对应自己的代码去调试
------解决思路----------------------
这样加异常捕获看是什么错误
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}
WIN10的ADO版本比XP版本高,在高版本编译在低版本是运行不了,反过来就可以了。
------解决思路----------------------
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe