vc++ ADO操作数据库 打开记录集出现 Unknown error 0x800A0E7D,如何解决

shadow2010lxq 2013-01-06 10:04:17
vc++使用ADO操作数据库,前几天运行良好,最近在打开记录集时出现Unknown error 0x800A0E7D错误,主要代码如下
头文件已引用,com也初始化过了
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordSet;
CString strConnect = "Provider=OraOLEDB.Oracle.1;Password=admin;Persist Security Info=True;User ID=dataanalysis;Data Source=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT =1521)) )(CONNECT_DATA = (SID = ORCL)))";
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");
if(hr)
{
m_pConnection->ConnectionTimeout = 15; m_pConnection->Open(_bstr_t(strConnect),"","",adModeUnknown);
}
CString Message;
Message.Format("连接数据库成功");
AfxMessageBox(Message);

}
catch(_com_error e)
{
CString errMessage;
errMessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errMessage);
}

CString sqlname = "select t.table_name from user_tab_comments t where t.table_name like 'EXIT2011%'";
try
{
m_pRecordSet.CreateInstance("ADODB.Recordset");
if (m_pRecordSet==NULL)
{
AfxMessageBox("recordSet对象创建失败");
}
m_pRecordSet->CursorLocation= adUseClient;
m_pRecordSet->Open(_bstr_t(sqlname),_variant_t((IDispatch *)m_pConnection,true), adOpenKeyset, adLockOptimistic, adCmdText); //此处出现异常
}
catch (_com_error e)
{
CString errMessage;
errMessage.Format("打开记录集失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errMessage);
}
急求指导!




...全文
3823 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanbingyunzi163 2014-11-19
  • 打赏
  • 举报
回复
引用 9 楼 script_line 的回复:
[quote=引用 8 楼 hanbingyunzi163 的回复:] 我是新手,该问题这几天也一直困扰着我,最后终于在网上找到答案解决了
遇到一样的问题,请问是怎么解决的?[/quote] 你的问题解决了吗,不知道您的问题是否与我相同,我的解决过程写在了博客里 http://blog.csdn.net/hanbingyunzi163/article/details/38402235
script_line 2014-10-05
  • 打赏
  • 举报
回复
引用 8 楼 hanbingyunzi163 的回复:
我是新手,该问题这几天也一直困扰着我,最后终于在网上找到答案解决了
遇到一样的问题,请问是怎么解决的?
hanbingyunzi163 2014-08-06
  • 打赏
  • 举报
回复
我是新手,该问题这几天也一直困扰着我,最后终于在网上找到答案解决了
wukonggaoxing 2013-12-20
  • 打赏
  • 举报
回复
引用 6 楼 cqyczj 的回复:
装没装ACCESS2007驱动,因为我也遇到这个情况,后来装了驱动就正常了 还有就是看看连接字符串对吗 VS2010 + access2007
人家说的很清楚了,之前程序正常运行,现在却出错,驱动出问题的可能性太小了,我目前也遇到这个问题了,刚开始提示是“未知指针错误”,然后我改过之后就出现与楼主一样的错误了,继续求解啊!
cqzj70 2013-02-08
  • 打赏
  • 举报
回复
装没装ACCESS2007驱动,因为我也遇到这个情况,后来装了驱动就正常了 还有就是看看连接字符串对吗 VS2010 + access2007
zyq5945 2013-01-06
  • 打赏
  • 举报
回复
异常捕获改成这样试试
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
		(LPCTSTR)e.Description(),
		(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}
hdg3707 2013-01-06
  • 打赏
  • 举报
回复
查一下是不是数据库出问题了,或者网络出问题了,或者数据库的侦听没有运行.这种情况只能单步执行,看是哪条语句出问题,然后判断是不是数据库的问题,因为以前好使,所以程序的问题不大,除非有缺陷没发现,到现在才出现
zyq5945 2013-01-06
  • 打赏
  • 举报
回复
ADO助手先测试下连接字符串和SQL.
shadow2010lxq 2013-01-06
  • 打赏
  • 举报
回复
引用 1 楼 hdg3707 的回复:
查一下是不是数据库出问题了,或者网络出问题了,或者数据库的侦听没有运行.这种情况只能单步执行,看是哪条语句出问题,然后判断是不是数据库的问题,因为以前好使,所以程序的问题不大,除非有缺陷没发现,到现在才出现
数据库是本机的,不会存在网络问题,使用pl/sql可以对数据库操作 单步执行,就是到m_pRecordSet->Open(_bstr_t(sqlname),_variant_t((IDispatch *)m_pConnection,true), adOpenKeyset, adLockOptimistic, adCmdText); 出错,错误是Unknown error 0x800A0E7D
shadow2010lxq 2013-01-06
  • 打赏
  • 举报
回复
引用 2 楼 zyq5945 的回复:
异常捕获改成这样试试 C/C++ code?123456789101112try{//你的ADO代码}catch (_com_error& e){CString strMsg;strMsg.Format(_T("错误描述:%s\n错误消息%s"), (LPCTSTR)e.Description(), (LPCTSTR)e.Error……
还是不行,错误描述:连接无法用于执行此操作,在此上下文中它可能已被关闭或无效, 错误消息Unknown error 0x800A0E7D

4,011

社区成员

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

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