ResultSet 如何得到记录总数 

lilinew 2009-10-29 02:28:19
java+mysql如下
String sql = "select * from a";
ResultSet rs= statement.executeQuery(sql)

第1个问题
现在我需要记录总数,找了半天没有看到方法,如何得到记录总数  (不会再来一次select count(×)吧)
第2个问题 我将使用批量更新的
PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中国')");

while(startIndex < 620000) { --如果知道记录总数,就把总数替换这个620000
如何写每500次做一次批量更新
for (int i = 0; i < 500; i++) {
pst.setInt(1, i); // 把一个SQL命令加入命令列表
pst.addBatch();
}
// 执行批量更新
pst.executeBatch();
// 语句执行完毕,提交本事务
con.commit();
               ----这里需要如何修改 
...全文
563 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsn011362 2009-10-30
  • 打赏
  • 举报
回复
闪过
caryyu 2009-10-30
  • 打赏
  • 举报
回复
路过 帮顶一下
Henry..D 2009-10-29
  • 打赏
  • 举报
回复
路过,帮忙顶下啦!~
lilinew 2009-10-29
  • 打赏
  • 举报
回复
rs.last();
int rowCount = rs.getRow();
rs.first();
int nTemp=0;

while(rs.next())
ntemp=ntemp+1
if(ntemp%500)==0 || ntemp= rowCount-1
potahai 2009-10-29
  • 打赏
  • 举报
回复
记得以前是再来一次地
lilinew 2009-10-29
  • 打赏
  • 举报
回复
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rset = stmt.executeQuery("select * from yourTableName");
rset.last();
int rowCount = rset.getRow(); //获得ResultSet的总行数

第二种:利用循环ResultSet的元素来获得ResultSet的总行数

ResultSet rset = stmt.executeQuery("select * from yourTableName");
int rowCount = 0;
while(rset.next()) {
rowCount++;
}

rowCount就是ResultSet的总行数。

第三种:利用sql语句中的count函数获得ResultSet的总行数

ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName");
int rowCount = 0;
if(rset.next()) {
rowCount=rset .getInt("totalCount ");
}

PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中国')");
while(rs.next())
pst.setInt(1, i);
// 把一个SQL命令加入命令列表
pst.addBatch();
}
// 执行批量更新
if(ntemp%500)==0 || ntemp=rs.recordcount
pst.executeBatch();
// 语句执行完毕,提交本事务
con.commit();
  • 打赏
  • 举报
回复
实际上就是再来一次,一个分页查询,如果需要显示总页数的话,那每次执行两个查询,一个是 count,另一个是查询当页数据。
loveofmylife 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 liyihongcug 的回复:]

第1个问题
现在我需要记录总数,找了半天没有看到方法,如何得到记录总数  (不会再来一次select count(×)吧
[/Quote]
最简单就是用元数据就是
ResultSetMetaData md=rs.getMetaData();//rs是一个ResultSet
int cols=md.getColumnCount();//得到字段个数


[Quote=引用楼主 liyihongcug 的回复:]

第2个问题 我将使用批量更新的
PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中国')");

while(startIndex < 620000) { --如果知道记录总数,就把总数替换这个620000
如何写每500次做一次批量更新
for (int i = 0; i < 500; i++) {
pst.setInt(1, i); // 把一个SQL命令加入命令列表
pst.addBatch();
}
// 执行批量更新
pst.executeBatch();
// 语句执行完毕,提交本事务
con.commit();
[/Quote]
你这样写数据会500个500个重复

改成这样
for(int i=1;i<620000;i++){
pst.setInt(1, i);
ps.addBatch();
if(i%500==0){
ps.executeBatch();
}
}
con.commit()
amdgaming 2009-10-29
  • 打赏
  • 举报
回复
帮顶。 好久没有 jdbc了

62,614

社区成员

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

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