ADO Recordset-> EndOfFile дает мне _com_error, когда пустой набор записей
Я использую ADO, и получаю очень странную ошибку com.
Поэтому я просто запускаю сохраненный процесс с использованием ADO CommandPtr и сохраняю его в наборе записей.
Вот что я делаю:
_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 и распечатал ее, я получил это.
Code = -2147217849
Meaning = IDispatch error #3153
Source = NULL
Что не говорит мне много.
Я не понимаю почемуRecPtr->EndofFile
выбрасывает ошибку com, так как он должен просто возвращать true / false.
Я очень сомневаюсь, что ошибка вызвана тем, что я делаю что-то не так при инициализации объектов Connection и Command. (Если так, то я получил бы ошибку при выполнении команды.)
Любые идеи о том, что может быть причиной этого исключения?