代码如下:
m_pRecordset =  m_pConnection->Execute((_bstr_t)sz,&DataRecords,adCmdText);如果是用open打开,是可以用m_pRecordset->RecordCount取得记录的个数但是用execute就不行,两者有什么区别吗??其他先前定义的一些代码:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
try
{

hr = m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
m_pConnection->Open("Data Source=Data;UID=sa;PWD=;","","",adModeUnknown);
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}

解决方案 »

  1.   

    他返回m_pRecordset,所以一样处理代码如下:
    m_pRecordset =  m_pConnection->Execute("SELECT COUNT(*) FROM users",&RecordsAffected,adCmdText);
        _variant_t vIndex = (long)0;
        _variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量
        上两句可以写成— _variant_t vCount = m_pRecordset->GetCollect((_variant_t)((long)0));
        m_pRecordset->Close();///关闭记录集
        CString message;
        message.Format("共有%d条记录",vCount.lVal);
        AfxMessageBox(message);///显示当前记录条数
      

  2.   

    这样子是不对的,m_pRecordset->GetCollect((_variant_t)((long)0));
    取的是记录集中的第一个数据了,并非是取的记录的个数,就如前面的注解所说);///取得第一个字段的值放入vCount变量,我试了一下,并不正确啊!!
      

  3.   

    m_pRecordset->GetRecordCount()行吗?
      

  4.   

    当然不行的呀!!
    Execute 返回的记录集是快照型的