ADO Recordset->EndOfFile giving me _com_error when

2019-03-02 15:14发布

问题:

I'm using ADO, and getting a very weird com error.

So I'm simply running a stored proc using ADO CommandPtr, and storing it in a Recordset.

Here is what I'm doing:

_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();
}

So my stored procedure is supposed to returns an empty recordset (0 rows).

But then , when I check if the recordset has reached the end (which should simply return true if it is empty). I get a com error.

When I caught the com error and printed it out, I got this.

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

Which doesn't tell me much.

I don't understand why RecPtr->EndofFile is throwing a com error, since it should simply return true/false.

I highly doubt that the error is caused because I'm doing something wrong when initializing Connection and Command objects. (If so, then I would have gotten the error when Executing the command.)

Any ideas on what might be causing this exception?

标签: c++ com ado