我正在使用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对象时做错了。 (如果是这样,那么在执行命令时我会收到错误。)
关于可能导致此异常的任何想法?