RecordsetPtr & Command's Execute() method

From: Chris Martin (nospam_at_please11111.net)
Date: 02/27/04


Date: Fri, 27 Feb 2004 02:31:52 GMT

I am trying to get back data from a "SELECT" query, and am having trouble
doing anything with the RecordsetPtr returned from a Command's Execute()
method. The docs say:

> The returned Recordset object is always a read-only, forward-only cursor.

Am I doing something incorrect in accessing the data from this Recordset? I
have gotten SELECT queries to work using Recordset's Open() method, but I
wanted to use the Command's Execute() instead.

If there is a good reason for using a different method, please explain.

/* code simplified for brevity */
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr pRs;

m_pConnection.CreateInstance(__uuidof(Connection));
m_pCommand.CreateInstance(__uuidof(Command));

m_pConnection->Open(m_strConn, lpstrUserID, lpstrPword, NULL);

m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandText = "SELECT * FROM Customers";

pRs = m_pCommand->Execute(NULL, NULL, adCmdText);

long count = pRs->GetRecordCount(); // returns -1
_bstr_t str = pRs->GetString(adClipString, 1, ",", "\n", ""); // returns
garbage
/* end */

TIA,
C. Martin