mfc中用ado向access表格添加记录时出现异常
mfc中用ado向access表格添加记录时出现错误
我用以下代码建立连接,没有出错
try
{
hr = m_pConnection.CreateInstance( "ADODB.Connection ");
if (SUCCEEDED(hr))
{
hr = m_pConnection-> Open(_T( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\USERS\\projects\\LogAn\\LogAn.mdb "), " ", " ",adModeUnknown);
}
}
catch (CException* e)
{
CString errMsg;
e-> GetErrorMessage(errMsg.GetBuffer(1), 1, NULL);
AfxMessageBox(errMsg, MB_OK);
}
但是在向其中一张messages表格添加错误时程序崩溃了
在没有catch错误值钱,就已经发生unhandled exception错误了
try
{
m_pConnection-> Execute(_T( "INSERT INTO Messages VALUES(1, -1, 1036, '14 May 2001 15:1:1 ', 'TMG ', 1, 1, 301, 'content ', 'data ') "), NULL, adCmdText);
}
catch (_com_error *e)
{
CString tmperr = e-> ErrorMessage();
AfxMessageBox(e-> ErrorMessage());
return FALSE;
}
经过跟踪调试发现在这个地方,hr返回了一个很大的负数,而在:Open()方法里
hr能正确返回0,请问是什么原因啊?
inline _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) {
struct _Recordset * _result;
HRESULT _hr = raw_Execute(CommandText, RecordsAffected, Options, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _RecordsetPtr(_result, false);
}
------解决方案--------------------
应该用_Recordset的指针对象 来插入修改数据
------解决方案--------------------
PutCollect
------解决方案--------------------
VC的ADO数据库查询与增删改操作实例,看完后你就知道了:
http://www.maoyeah.com/display.asp?boardid=3&id=43
我用以下代码建立连接,没有出错
try
{
hr = m_pConnection.CreateInstance( "ADODB.Connection ");
if (SUCCEEDED(hr))
{
hr = m_pConnection-> Open(_T( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\USERS\\projects\\LogAn\\LogAn.mdb "), " ", " ",adModeUnknown);
}
}
catch (CException* e)
{
CString errMsg;
e-> GetErrorMessage(errMsg.GetBuffer(1), 1, NULL);
AfxMessageBox(errMsg, MB_OK);
}
但是在向其中一张messages表格添加错误时程序崩溃了
在没有catch错误值钱,就已经发生unhandled exception错误了
try
{
m_pConnection-> Execute(_T( "INSERT INTO Messages VALUES(1, -1, 1036, '14 May 2001 15:1:1 ', 'TMG ', 1, 1, 301, 'content ', 'data ') "), NULL, adCmdText);
}
catch (_com_error *e)
{
CString tmperr = e-> ErrorMessage();
AfxMessageBox(e-> ErrorMessage());
return FALSE;
}
经过跟踪调试发现在这个地方,hr返回了一个很大的负数,而在:Open()方法里
hr能正确返回0,请问是什么原因啊?
inline _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) {
struct _Recordset * _result;
HRESULT _hr = raw_Execute(CommandText, RecordsAffected, Options, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _RecordsetPtr(_result, false);
}
------解决方案--------------------
应该用_Recordset的指针对象 来插入修改数据
------解决方案--------------------
PutCollect
------解决方案--------------------
VC的ADO数据库查询与增删改操作实例,看完后你就知道了:
http://www.maoyeah.com/display.asp?boardid=3&id=43