代码:  
         _ConnectionPtr Connect;
_RecordsetPtr Recordset;
HRESULT hr;
TCHAR buffer[MAX_PATH];
GetCurrentDirectory(MAX_PATH,buffer);
CString strDBFile;
strDBFile.Format(_T("%s"),buffer);
strDBFile+=_T("\\db.mdb");
if(GetFileAttributes(strDBFile)==INVALID_FILE_ATTRIBUTES)
{
AfxMessageBox(_T("Can't found database file!"));
//return false;
}
else
{
CString strOpen;
strOpen.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"),strDBFile);
try
{
hr=Connect.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
Connect->Open((_bstr_t)strOpen,"","",adModeUnknown);
}
}
catch(_com_error e)
{
// 捕捉异常   
CString ErrorMessage;    
ErrorMessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());    
AfxMessageBox(ErrorMessage);///显示错误信息  
}
} CString strCreateTime;
strCreateTime.Format(_T("E:\\"));
CString strSQL;
strSQL.Format(_T("insert into FoundFile (CreateTime) values (12456465)")); try{
hr=Connect.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
Connect->Execute(_bstr_t(strSQL),NULL,adExecuteNoRecords);
}
}
catch(_com_error e)
{
CString errormessage;    
errormessage.Format(_T("写数据库失败!\r\n错误信息:%s"),e.ErrorMessage());    
AfxMessageBox(errormessage);///显示错误信息   }
每次执行到Connect->Execute(_bstr_t(strSQL),NULL,adExecuteNoRecords)的时候就报错,错误信息是:
unknown error:0x800A0E78
insert into FoundFile (CreateTime) values (12456465) 在Access里面执行是成功的
Why?

解决方案 »

  1.   

    自己搞定了,来个人接分撒.insert into 不能用_ConnectionPtr来执行,要用_RecordsetPtr来open
    代码:
    try{
    hr=Recordset.CreateInstance("ADODB.Recordset");
    if(SUCCEEDED(hr))
    {
    Recordset->Open((_bstr_t)(strSQL) ,
    _variant_t((IDispatch* )Connect, true),
    adOpenStatic,
    adLockOptimistic,
    adCmdText);
    }
    }
    catch(_com_error e)
    {
    CString errormessage;    
    errormessage.Format(_T("写数据库失败!\r\n错误信息:%s"),e.ErrorMessage());    
    AfxMessageBox(errormessage);///显示错误信息   }