空记录集时,ADO Recordset-> EndOfFile给我_com_error

时间:2014-07-29 14:34:47

标签: c++ com ado

我正在使用ADO,并且遇到了一个非常奇怪的com错误。

所以我只是使用ADO CommandPtr运行存储过程,并将其存储在Recordset中。

以下是我正在做的事情:

_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, adOptionUnspecified);   //RecPtr = Empty Recordset

while (!RecPtr->EndOfFile) {       //ERROR HAPPENS HERE!!!
    //Do something
    RecPtr->MoveNext();
}

所以我的存储过程应该返回一个空的记录集(0行)。

但是,当我检查记录集是否已到达结尾时(如果它是空的,则应该返回true)。我得到了一个com错误。

当我发现com错误并将其打印出来时,我得到了这个。

Code = -2147217849
Meaning = IDispatch error #3153
Source = NULL

这对我来说并不多。

我不明白为什么RecPtr->EndofFile会抛出一个com错误,因为它应该只返回true / false。

我非常怀疑错误是由于我在初始化Connection和Command对象时做错了。 (如果是这样,那么在执行命令时我会收到错误。)

关于可能导致此异常的任何想法?

0 个答案:

没有答案