2009-12-11 60 views
0

下面是代码:CRecordset.Open只取回一条记录!

CDatabase m_db; 
m_db.OpenEx(_T("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=mydb;UID=root;PASSWORD=123123;OPTION=3;"), FALSE); 
CRecordset recSet(&m_db); 
recSet.Open(AFX_DB_USE_DEFAULT_TYPE, _T("SELECT * From articles"), CRecordset::executeDirect); 
int nRecords = recSet.GetRecordCount(); // Equals to 1! 

项目表有超过1000条记录。我尝试了不同的数据库/表,但问题没有解决!

回答

2

这是CRecordset工作方式的限制。您需要调用MoveNext,直到IsEOF返回TRUE,然后记录计数才会准确。

+1

马克说什么。有关CRecordset成员的信息,请参阅http://msdn.microsoft.com/en-us/library/aa312382(VS.60).aspx。 – 2009-12-11 02:53:24

-1
int RecCount=0; 
try { 
    cr.Open(CRecordset::snapshot,"SELECT * FROM Table;", CRecordset::readOnly); 
    while (!cr.IsEOF()) { 
     RecCount=cr.GetRecordCount();cr.MoveNext();}cr.Close(); 
    } 
}