📄 subject_66875.htm
字号:
<p>
序号:66875 发表者:阿修罗一平 发表日期:2003-12-27 10:07:39
<br>主题:帮助-如何最快捷的从数据集中获得记录数
<br>内容:第一种笨方法是<BR>do <BR> {<BR> set.MoveNext();<BR> }<BR><BR> while(!set.IsEOF());<BR> int h = set.GetRecordCount();<BR>如果数据库很大,程序运行速度一定会很慢<BR>(2)<BR>利用CRecordsetStatus rstatus;<BR>m_pSet->GetStatus(rstatus);<BR>在CRecordsetStatus中有一个变量m_lCurrentRecord表示的是当前记录的索引值<BR>(3)<BR>我不知道利用open(CRecordset::dynaseet,"select count(*) from student",CRecordSet::none) 得到数据集中记录的个数<BR>请指教,先谢谢了
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 13:47:46
<br>内容:set.GetCount()就行了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 14:29:54
<br>内容:我查了过,msdn上说:For Recordset objects, getCount returns the number of records in the Recordset. If the Recordset is empty, -1 is returned.<BR><BR>但是当我调用set.open(-----);<BR> set.getCount()时它会报出错误<BR>只是为什么<BR><BR>error C2039: 'getCount' : is not a member of 'Crecordset'
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 14:35:48
<br>内容:你你你你真可爱:<BR>set.Open(CRecordset::dynaset,---->CRecordset::snapshot 快照类型<BR>"select ...",<BR>CRecordset::none----->CRecordset::readOnly 只读 <BR>set.getrecordcount()<BR>注意大小写。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 14:53:36
<br>内容:我明白你使用快照类型和只读方式的意思,输出的结果依然是:1<BR>record.Open(CRecordset::snapshot,"select count(*) from student",CRecordset::readOnly);<BR> TRACE("%d\n",record.GetRecordCount());<BR><BR>这是为什么呢,我不明白了。按说数据集open后,调用getrecordcount()应该是总数<BR>可是为什么是1呢<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 14:57:50
<br>内容:当然是1了,“n”就是一条记录嘛<BR>你用select *from student
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 15:06:47
<br>内容:能否说清楚一点,我有点不明白了,即使我用了select * from student<BR>结果也是1.是不是指向了第一个记录,所以返回个数是一。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 15:10:55
<br>内容:想和你聊聊,有QQ吗,我想这样方便一些。如果不方便也没什么。我的是20550177
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 15:11:23
<br>内容:不是,那你数据库中有几条记录<BR>do <BR> {<BR> set.MoveNext();<BR> }<BR><BR> while(!set.IsEOF());<BR> int h = set.GetRecordCount();<BR>时循环几次?<BR>方便看你的代码吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 15:18:29
<br>内容:我这只是一个实验程序<BR>record.Open(CRecordset::snapshot,"select * from student",CRecordset::readOnly);<BR> // TRACE("%d,%d,%d",record.m_studentID,record.m_name,record.m_gradYear);<BR> // TRACE("%d",record.GetRecordCount()); //如果执行则还是1<BR> int i=0;<BR> do <BR> {<BR> i++;<BR> record.MoveNext();<BR> }<BR> while(!record.IsEOF());<BR> int h = record.GetRecordCount();<BR> TRACE(" %d is %d",i,record.GetRecordCount());<BR><BR>结果是8,表中有8条记录
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 15:20:43
<br>内容:我不想为了知道表中的记录个数而遍历一次表,如果记录很多,程序就是失败的<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 15:21:49
<br>内容:发给我吧,说得我痒痒的<BR>连数据库也一并给我。<BR>showerxu1979@yahoo.com.cn
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 15:36:45
<br>内容:不方便就算了。有点遗憾。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-27 15:42:38
<br>内容:测试程序已经发给你了。重要的程序你也明白,不好意思。如果是我自己的,没问题,但不是
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-27 15:48:52
<br>内容:要的就是出错环境,只要出错就行
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐相华 回复日期:2003-12-29 14:19:43
<br>内容:惭愧,没搞定。没用过CRecordSet。不理解它为何有生存能力,一次查询就要有一个类?用ADO吧!(题外话)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-29 14:34:20
<br>内容:还是应该谢谢你花时间帮我解决问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:林建华 回复日期:2003-12-29 14:35:47
<br>内容:(3)<BR>我不知道利用open(CRecordset::dynaseet,"select count(*) from student",CRecordSet::none) 得到数据集中记录的个数<BR>这个方法比较快,如果你不需要用到具体的记录集的话
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-29 14:39:38
<br>内容:是,对。但大部分是要对这些数据操作的,例如本例。用do while速度肯定不如for。我一般用for循环。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿修罗一平 回复日期:2003-12-29 14:45:49
<br>内容:有谁利用open方法得到数据集记录个数的 其实我是看到你们给某些人的答复后选择用open实验一下,不过没有成功,不知道原因试什么。一般我是利用 for得到记录集个数的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-29 14:54:53
<br>内容:我用的ADO中的_RecordsetPtr打开的。一开始也用do while。但维护一约18万记录时,每判断while中的条件(是否到尾)时,都要花费4-5秒。后来就用for循环了。我才看了看游标及打开模式的有关知识。我建议你也用for吧,除非你能保证你的数据库只有一点点数据。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -