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

askr 2004-10-12 02:58:57
只有select count(*) from ...才行吗,rs的功能也太弱了
...全文
216 点赞 收藏 11
写回复
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();
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告