取出resultset里的记录总数只有再查询一次?

askr 2004-10-12 02:58:57
只有select count(*) from ...才行吗,rs的功能也太弱了
...全文
280 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningIII 2004-10-13
  • 打赏
  • 举报
回复
不用再查询一次阿,除非你的rs是不能向后的!

rs.last();
recordNum=rs.getRow();
rs.beforeFirst() ;
askr 2004-10-13
  • 打赏
  • 举报
回复
up
dobly 2004-10-13
  • 打赏
  • 举报
回复
总的说来,有几种方法。
一、如上所说,移到最后,getRow(),再移到前面。(数据量小的情况)
二、把count值放在存储过程里在外面调用。这样适合数据量大的情况。

不建议在数据量大的时间反复移动游标。数据量大时,考虑用存储过程
askr 2004-10-12
  • 打赏
  • 举报
回复
last()慢,请问做过测试吗?
to Ronanljy(心灵风暴) :
放在rs里,要是存储过程还好说,要是用动态sql,那么如何放在里面,动态sql不支持变量
Ronanljy 2004-10-12
  • 打赏
  • 举报
回复
"开玩笑,如果数据量少还好,数据量大了rs.last和while(rs.next)方法会让人觉得狂慢"


有道理,如果要记录总数可以考虑在第一次查询的时候就把总数值一起放到resultset里。
hqcsx 2004-10-12
  • 打赏
  • 举报
回复
select id from table
count(id)
datalover 2004-10-12
  • 打赏
  • 举报
回复
select count(*) from ...
怎么样把count(*) 给取出来?

Jujus 2004-10-12
  • 打赏
  • 举报
回复
开玩笑,如果数据量少还好,数据量大了rs.last和while(rs.next)方法会让人觉得狂慢
winterxu416 2004-10-12
  • 打赏
  • 举报
回复
ResultSet rs;
rs.beforeFirst() ;
把游标移动到ResultSet前面
cpl3113 2004-10-12
  • 打赏
  • 举报
回复
int getRow() //Retrieves the current row number.
rs.getRow
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自己算也可以嘛
int i = 0;
while( rs.next){
i++;
}
Tasia 2004-10-12
  • 打赏
  • 举报
回复
Statement stmt = conn.createStatement(ResultSet.CURSOR_SCROLL_INSENSITIVE,ResultSet.CURSOR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.last();
int count = rs.getRow();
rs.beforeFirst();

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧