adowin32.exe 中的 0x7c812a5b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012fbf0 处的 _com_error,如果把数据库换成access就没问题
解决方案 »
- 知道CSDN好人多,特来这里请教一个关于网络的问题,望好心人解答!
- 重载的button按钮无法显示(MFC对话框编程),编译、执行没有出现错误
- 头一次用vc,它的工程文件怎么那么多啊?代码在哪个文件里面写?
- 如何用sql语句将一个二进制字段update?
- 一个很奇怪的现象
- vc6.0英文版奇怪的问题!
- 新建了一个 vc群 欢迎大家来讨论!4296702
- afx_msg是什么意思?
- 我用VB写了一个简单的com服务器程序与客户端程序,请问:
- 急急急呀,template模板问题
- 请问假设buf设的足够大,调用一次recv或者wsarecv,在阻塞和非阻塞模式下接受到的数据量取决于什么?
- 如何用程序实现将磁盘驱动器映射成NTFS文件夹?
这个之前没有CreateInstance?
if(m_pRecordset->State)
{
m_pRecordset->Close();
}
同样的代码我用access的时候没有出现过任何错误,但是用SQL SERVER2005把ACCESS替换的时候就出现了上面的问题,这是怎么回事?
如果不想使用try-catch,可以直接调用原始接口方法,然后判断返回值。
struct _Recordset * _result = 0;
HRESULT _hr = raw_Execute(CommandText, RecordsAffected, Options, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _RecordsetPtr(_result, false);
}这是项目里面的msado15.tli,逐语句调试的时候说里面的return那句有问题,这应该怎么解决??
access和sql在某些语句上不一样
_bstr_t strconn="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=Gavin;Initial Catalog=userman;Data Source=GAVIN\\SQLEXPRESS"; //连接
try{pcon->Open(strconn,"","",NULL);}
catch (_com_error &e)
{
AfxMessageBox(e.Description());
}应该是这么写的吧?我的这个语句还是那天你教我的呢。
你不是execute才出现问题么?
catch (_com_error &e)
{AfxMessageBox(e.Description());
}
捕捉异常,抱什么错?
异常根本就没有捕捉到,编译很顺利的就通过了
{
::CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset)); pConn.CreateInstance(__uuidof(Connection));
CString sql="select * from users";
pConn->Open("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=Gavin;Initial Catalog=userman;Data Source=GAVIN\\SQLEXPRESS","","",adModeUnknown); pRst=pConn->Execute((_bstr_t)sql,NULL,adCmdText); //读取数据
_variant_t var;
CString strName,strAge;
strName=strAge="";
if(!pRst->BOF)
pRst->MoveFirst();
else
{
cout<<"表内数据为空";
return 0;
}
while(!pRst->adoEOF)
{
var = pRst->GetCollect("uid");
if(var.vt != VT_NULL)
cout<<"姓名:"<<(LPCTSTR)(_bstr_t)var<<" ";
var =pRst->GetCollect("uname");
if(var.vt != VT_NULL)
cout<<(LPCTSTR)(_bstr_t)var<<"岁"<<endl;
pRst->MoveNext();
} //结束工作
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
getchar();
return 1;
}
catch (_com_error &e)
{AfxMessageBox(e.Description());
}
捕捉一下
adOpenDynamic,adLockOptimistic,adCmdUnknown);这样试试..
还是刚才那个错误adowin32.exe 中的 0x7c812a5b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012fbc0 处的 _com_error。有个警告:1>LINK : warning LNK4076: 无效的增量状态文件“.\Debug/adowin32.ilk”;正在非增量链接跟这个有关系么?
把相关代码都放在try中