VC++ 6.0连接数据库,Open时0x800A0E7A 错误,在我笔记本上Win10 32位可以连接服务器,但是客户机器上不可以,重装系统也不行,求助呀

程序员小哈
嵌入式领域优质创作者
博客专家认证
2015-10-15 05:27:35
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
...全文
346 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小哈 2015-10-24
  • 打赏
  • 举报
回复
引用 6 楼 lx624909677 的回复:
win7开始,微软对应用程序的权限控制就很严格了,你的这个错误在网上是可以搜索到错误原因的,具体的原因还是你自己先去查查,然后对应自己的代码去调试
谢谢啦,后来又找了一个Win7 64位的想试试,竟然可以了,哎,莫名其妙,准备结贴了,谢谢各位
程序员小哈 2015-10-24
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
在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
谢谢啦,后来又找了一个Win7 64位的想试试,竟然可以了,哎,莫名其妙,准备结贴了,谢谢各位
程序员小哈 2015-10-24
  • 打赏
  • 举报
回复
引用 7 楼 zyq5945 的回复:
这样加异常捕获看是什么错误
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版本高,在高版本编译在低版本是运行不了,反过来就可以了。
程序在XP下也编译过,就是不可以,后来又找了一个Win7 64位的想试试,竟然可以了,哎,莫名其妙
zyq5945 2015-10-16
  • 打赏
  • 举报
回复
这样加异常捕获看是什么错误
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版本高,在高版本编译在低版本是运行不了,反过来就可以了。
赵4老师 2015-10-16
  • 打赏
  • 举报
回复
在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
lx624909677 2015-10-15
  • 打赏
  • 举报
回复
win7开始,微软对应用程序的权限控制就很严格了,你的这个错误在网上是可以搜索到错误原因的,具体的原因还是你自己先去查查,然后对应自己的代码去调试
笨笨仔 2015-10-15
  • 打赏
  • 举报
回复
引用 4 楼 rsd102 的回复:
引用 3 楼 lx624909677 的回复:
0x800A0E7A 是表示ADO找不到指定的提供者,是不是权限不够?
会是什么权限呢?
数据库访问权限
程序员小哈 2015-10-15
  • 打赏
  • 举报
回复
引用 3 楼 lx624909677 的回复:
0x800A0E7A 是表示ADO找不到指定的提供者,是不是权限不够?
会是什么权限呢?
lx624909677 2015-10-15
  • 打赏
  • 举报
回复
0x800A0E7A 是表示ADO找不到指定的提供者,是不是权限不够?
程序员小哈 2015-10-15
  • 打赏
  • 举报
回复
引用 1 楼 lx624909677 的回复:
catch捕获下错误内容是什么先
::AfxMessageBox(e.ErrorMessage());对话框弹出的就是0x800A0E7A ,暂时还没解决,估计今晚要通宵了,求助呀
lx624909677 2015-10-15
  • 打赏
  • 举报
回复
catch捕获下错误内容是什么先

4,011

社区成员

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

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