两种方法实现ADO.NET记录集获取记录数量

开发 后端
文章介绍了ADO.NET记录集取记录数量的两种方法:用静态、键集游标方式打开数据表、用SQL语句实现,希望对大家有帮助。

学习ADO.NET时,你可能会遇到ADO.NET记录集问题,这里将介绍ADO.NET记录集问题的解决方法,在这里拿出来和大家分享一下。VC使用ADO技术访问数据表,打开数据表后,获得了ADO记录集,如何获得记录数量?一个小问题,没想到还有点意思,实践完成,总结一下。

方法一、用静态、键集游标方式打开数据表

  1. p_hr = m_pRecordset->Open(_variant_t(bstrQuery),vNull,adOpenStatic,adLockOptimistic,adCmdText); 

然后用GetRecordCount()函数,即可获得记录数量。

  1. m_pRecordset->GetRecordCount(); 

#T#另外用键集游标方式也可以获得,adOpenKeyset (键集游标),但是用adOpenDynamic (动态游标)方式,就只会返回-1。多个用户都使用同一张表,且对其进行修改的可能都很大,则***使用adOpenKeyset。如只是浏览, 使用adOpenStatic   可提高性能! 补充:adOpenStatic   静态游标   ,   其它用户的修改对当前用户是不可见的.  adOpenDynamic   动态游标   ,   所有的修改对当前用户是见的.  adOpenKeyset   是前两种的折衷   ,   改对当前用户是见的.   但性能是***的.

方法二、用SQL语句实现

  1. “select   count(*)   from   表名;”,这样就不用关心游标的方式了。 

例子如下:

  1. rs->Open("select   COUNT(*)   from   tbUsersInfo",strCnn,    
  2. adOpenKeyset,adLockOptimistic,adCmdText);    
  3. long   RecordCount;    
  4. RecordCount=rs->Fields->GetItem((long)0)->GetValue(); 

还有一个例子:

  1. m_pRecordset   =   m_pConnection->Execute("SELECT   COUNT(*)   FROM   表名",&RecordsAffected,adCmdText);    
  2. _variant_t   vIndex   =   (long)0;      
  3. _variant_t   vCount   =   m_pRecordset->GetCollect(vIndex);    
  4. CString   message;    
  5. message.Format("共有%d条记录",vCount.lVal);    
  6. AfxMessageBox(message); 

补充:

先将ADO记录集的

  1. CursorLocation   =   adUseClient;    

然后就可以了,总之感觉很意思,一个小问题,却有几种不同的解决方法,而且对于不同的数据库,还有点不一样。

责任编辑:田树 来源: 博客
相关推荐

2009-12-28 13:53:01

ADO.NET记录集

2009-12-28 10:22:52

ADO Records

2009-12-24 16:32:00

ADO 记录集

2009-11-11 16:44:47

ADO记录集

2009-12-28 09:50:32

ADO数据库

2009-11-11 10:39:19

ADO.NET Fin

2009-12-30 15:47:14

ADO 记录集

2010-01-04 15:00:29

ADO记录集

2009-11-12 11:29:42

ADO.NET连接数据

2009-11-11 10:06:12

ADO.NET设计

2009-11-12 10:24:19

ADO.NET代码

2009-11-13 09:53:47

ADO.NET权限集

2009-11-11 11:00:38

ADO.NET结果集

2009-11-11 10:55:10

ADO.NET对象

2009-11-13 09:45:54

ADO.NET程序集

2009-11-11 15:09:35

ADO.NET数据集

2009-10-29 10:10:10

ADO.NET数据集类

2009-11-13 10:20:44

2009-11-04 12:45:33

ADO.NET Dat

2009-11-03 17:12:33

ADO.NET Exe
点赞
收藏

51CTO技术栈公众号