ADO错误:“异步执行时无法执行操作”

时间:2014-07-29 21:22:27

标签: c++ sybase ado

我之前发过一个类似的问题,但现在我得到了一个不同的错误。

我正在使用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选项。

为什么会发生这种情况,我该如何解决?

由于

0 个答案:

没有答案