用ADO操作DBF数据库的一个奇怪问题(报“一未知错误”)
naile 2002-04-27 11:01:20 今天我用VC写了一个ADO的程序,碰上一个问题,实在找不出原因,望各位大虾指点:
在一个线程中,我不断接受数据,然后判断DBF数据库中是否有该数据,如无,加入库中,如有,更新原数据.但每当用MyDB->Execute()语句执行INSERT语句时,一切正常,而当执行UPDATE语句时报“一未知错误”(SQL语句都正确,但增加和跟新的纪录都有20多项),部分代码如下
_ConnectionPtr MyDB;
MyDB.CreateInstance(__uuidof(Connection));
try
{
MyDB->Open(...);
}
catch(_com_error e)
{
return 0;
}
while(IsRun)
{
//接受数据
_RecordsetPtr Prs;
Prs.CreateInstance(__uuidof(Recordset));
CString strSQL=_T("SELECT * FROM ...WHERE..");//一条条件查询语句
Prs->Open((_bstr_t)strSQL,MyDB.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
if(Prs->adoEOF() && Prs->BOF())
{
strSQL="INSERT INTO....." //INSERT的SQL语句
}
else
{
strSQL="UPDATE ... WHERE ..."//UPDATE的SQL语句
}
Prs->Close();
try
{
_variant_t vRows;
MyDB->Execute((_bstr_t)strSQL,&vRows,adCmdText)
}
catch(_com_error e)
{
::MessageBox(hWnd,e.ErrorMessage(),"ERROR",MB_OK);
//当strSQL为UPDATE语句时,出错,报“一未知错误”
//strSQL为INSERT语句时,正常
continue;
}
}
Prs->Close();