CRecordset类对象表示从数据源中选出的一组记录,该对象使用户能完成在记录间的滚动、更新、过滤、排序等操作。一般而言,都是利用类向导将CRecordset类的子类与数据库的某个表关联起来,8.2.1和8.2.2节就是这样做的。当功能简单时可以直接使用CRcordset类,以下例子统计了UserTable表中权限为0的用户的个数。
#include <afxdb.h>
void CEx080103Dlg::OnGetCount()
{
CDatabase db ;
db.OpenEx("DSN=Ex080101");
{
CRecordset rs(&db);
CString strSql = "SELECT * FROM UserTable where popedom = 0 " ;
rs.Open(CRecordset::snapshot,strSql);
while(!rs.IsEOF())
rs.MoveNext();
int iCount = rs.GetRecordCount() ;//获得检索过的记录数
rs.Close();
}
db.Close();
}
CRecordset对象的打开方式对应用程序性能有很大影响。其中CRecordset::dynaset是动态记录集,可双向滚动。CRecordset::snapshot是静态记录集,可双向滚动。CRecordset::forwardOnly是只读记录集,只能向前滚动。CRecordset::dynamic是可双向滚动的记录集,其他用户对成员身份、排序以及数据值所做的更改都是可见的。遗憾的是许多ODBC驱动程序不支持这种类型的记录集。
注意:
(1)数据源的名称没有限制,但要求容易理解。
(2)数据库的位置没有限制,但最好和可执行程序放在一起。
(3)此实例用到的数据库在8.1.1节已经建立,数据源在8.1.2节已经建立。