我之前发过一个类似的问题,但现在我得到了一个不同的错误。
我正在使用ADO Command对象来执行简单查询并将结果存储在Recordset对象中。
(之前有人提到我可以使用ConnectionPtr-> Execute或Recordset-> Open方法,但是有一个特定的原因我为什么使用ADO Command对象..)
无论如何,这是我的代码摘要:
_ConnectionPtr Connptr;
//Instantiate ConnectionPtr...
_CommapndPtr CommPtr;
CommPtr.CreateInstance(__uuidof(Command));
CommPtr->CommandType = adCmdText;
CommPtr->ActiveConnection = ConnPtr;
CommPtr->CommandText = "Execute MyDb..MyStoredProc";
_RecordsetPtr RecPtr;
RecPtr.CreateInstance(__uuidof(Recordset));
RecPtr->CursorLocation = adUseClient;
RecPtr->CacheSize = 150;
RecPtr = CommPtr->Execute(NULL, NULL, adCmdText);
while (!RecPtr->EndOfFile) { //ERROR HAPPENS HERE!!!
//Do something
RecPtr->MoveNext();
}
当我尝试检查Recordset是否为空时,我得到了这个_com_error异常:
Code = -2146824577
Meaning = Unknown error 0x800A0E7F
Source = ADODB.Command
Description = Operation cannot be performed while executing asynchronously
我发现这很奇怪,因为我在执行Command对象时没有使用adAsyncExec选项。
为什么会发生这种情况,我该如何解决?
由于