程序员人生 网站导航

关于ADO记录集GetRecordCount()返回记录条数-1的问题

栏目:数据库应用时间:2015-03-13 08:09:27
ADO方式操作数据库我们通常使用GetRecordCount函数来快速判断1个打开的记录集里面总共有多少条记录,但在使用中有时却发现有时可能查不到任何的数据,跟踪发现GetRecordCount()返回值变成了,而且记录集里也有记录存在。
 
1般情况下当ADO不能肯定记录条数,或连接提供者、游标类型都不支持RecordCount的时候,RecordCount属性都将返回⑴。
最经常使用的两个游标类型是: 
adUseClient 
使用由本地游标库提供的客户端游标。本地游标引擎通常允许使用的许多功能多是驱动程序提供的游标没法使用的,因此使用该设置对那些将要启用的功能是有好处的。adUseClientBatch与 adUseClient同义,也支持向后兼容性。 
adUseServer 
默许值。使用数据提供者或驱动程序提供的游标。这些游标有时非常灵活,对其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能没法由服务器端游标摹拟,通过该设置将没法使用这些功能。 
这是MSDN上的解释,补充说明:使用adUseClient就是表示数据需要传输到客户端后再进行操作,不具有同步。它能更好的支持RecordCount属性,这样对性能的影响比较大,如果数据很多会更明显。adUseServer是直接在数据库中操作,处理的速度比较快。在其他的很多方面adUesServer很有限制。 

如何正确使用RecordCount属性,我们只需在使用时设置好游标(静态/客户): 
在m_pSet->Open()前加上: 
m_pSet->CursorType = adOpenStatic; 
m_pSet->CursorLocation = adUseClient;
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐