ODBC获取记录记录数

//ODBC 的 CRecordSet 提供了一个函数GetRecordCount 用于返回记录条数
//但是MSDN上有这样的说明
/*The record count is maintained as a "high water mark," the highest-numbered record yet seen as the user moves through the records. The total number of records is only known after the user has moved beyond the last record. For performance reasons, the count is not updated when you call MoveLast. To count the records yourself, call MoveNext repeatedly until IsEOF returns nonzero. Adding a record via CRecordset:AddNew and Update increases the count; deleting a record via CRecordset::Delete decreases the count.*/
//因此想要返回符合查询条件的记录总数,还得另想办法
//下面的程序就是使用SQL的COUNT语句实现的记录总数的查询

    


  long nCount = 0;
  try
  {
    if(m_pDatabase && m_pDatabase->IsOpen())
    {
      CString cmdSQL = _T("");
      cmdSQL.Format( _T("SELECT COUNT(*) FROM %s WHERE nID=%ld AND bActive = 1"),
        szDefaultSQL, nID); //查询条件

      CRecordset rsCount(m_pDatabase);
      if(rsCount.Open(CRecordset::forwardOnly, cmdSQL, CRecordset::executeDirect))
      {
        CString strValue = _T("0");
        if (!rsCount.IsEOF())
          rsCount.GetFieldValue((short)0, strValue);
        nCount = _ttol(strValue);
        rsCount.Close();
      }
    }
  }
  catch(CDBException * e)
  {
    e->ReportError();
    e->Delete();
  }

  return nCount;

你可能感兴趣的:(数据库/COM)