getrecordcount的使用问题在技术社区里也讨论很多次,一般的建议都是尽量不使用这个函数,要使用也是先通过循环movefirst.movenext遍历后在使用.但是这样感觉很麻烦也不是很安全,因为如果没有记录很难保证movefirst不抛出异常,当然也可以使用try{...}.catch(_com_error &e){...}方式来捕捉异常.所以另一钟更常见的方式就是使用select count(*) as tatol from table查询语句,然后用getcollect方法(ado)取得total的值来得到. 在很多时候,我们又很需要getrecordcount函数来快速判断一个打开的记录集里面总共有多少条记录.我一般是使用ado方式操作数据库,所以这里谈的很多情况只适合ado方式.先看个问题:_connectionptr m_pcon;_recordsetptr m_pset;m_pset.createinstance("ado.record");m_pcon.createinstance("ado.connect");m_pcon->open("dsn=***;.....);//连接到一个设置好的dsn名称,后面的参数就不写啦 m_pset->open();//这里打开一个表关键位置:if(m_pset->getrecordcount() != 0)//如果记录条数不为0{ //控制操作记录}以上代码能够完全正常的运行,后来把连接的语句换为了:m_pcon->open("provider=sqloledb;.....); //换了一种数据库连接提供者却发现查不到任何的数据,跟踪发现getrecordcount()返回值变成了-1,而且记录集里也有记录存在.后来通过查msdn解决了问题.... 下一页