这不是一个很简单的手术吗?但是,我看到既没有size()也没有length()方法。
当前回答
SELECT COUNT(*) FROM…查询。
OR
int size =0;
if (rs != null)
{
rs.last(); // moves cursor to the last row
size = rs.getRow(); // get row id
}
在这两种情况下,都不需要遍历整个数据。
其他回答
当使用rs.last()时,我得到了一个异常
if(rs.last()){
rowCount = rs.getRow();
rs.beforeFirst();
}
:
java.sql.SQLException: Invalid operation for forward only resultset
因为默认情况下它是ResultSet。TYPE_FORWARD_ONLY,这意味着只能使用rs.next()
解决方案是:
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql = "select count(*) from message";
ps = cn.prepareStatement(sql);
rs = ps.executeQuery();
int rowCount = 0;
while(rs.next()) {
rowCount = Integer.parseInt(rs.getString("count(*)"));
System.out.println(Integer.parseInt(rs.getString("count(*)")));
}
System.out.println("Count : " + rowCount);
获取ResultSet大小的方法,不需要使用数组列表等
int size =0;
if (rs != null)
{
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
现在你会得到大小,如果你想打印ResultSet,在打印之前使用以下一行代码,
rs.beforeFirst();
ResultSet rs = ps.executeQuery();
int rowcount = 0;
if (rs.last()) {
rowcount = rs.getRow();
rs.beforeFirst(); // not rs.first() because the rs.next() below will move on, missing the first element
}
while (rs.next()) {
// do your standard per row stuff
}
我检查了ResultSet接口的运行时值,发现它几乎一直都是一个ResultSetImpl。ResultSetImpl有一个名为getUpdateCount()的方法,它返回您正在寻找的值。
下面的代码示例应该足够了: ResultSet ResultSet = executeQuery(sqlQuery); double rowCount = ((ResultSetImpl)resultSet).getUpdateCount()
我知道向下转换通常是一个不安全的过程,但这个方法还没有让我失败。
推荐文章
- Java 8接口方法中不允许“同步”的原因是什么?
- 选项(RECOMPILE)总是更快;为什么?
- 设置数据库从单用户模式到多用户
- 如何找到Java堆大小和内存使用(Linux)?
- oracle中的RANK()和DENSE_RANK()函数有什么区别?
- 的类型不能用作索引中的键列
- SQL逻辑运算符优先级:And和Or
- 使用Enum实现单例(Java)
- 如何检查一个表是否存在于给定的模式中
- RabbitMQ与通道和连接之间的关系
- 添加一个复合主键
- buildSessionFactory()配置方法在Hibernate中已弃用?
- Spring MVC -如何获得所有的请求参数在一个地图在Spring控制器?
- 如何在SQL Server Management Studio中查看查询历史
- 如何在Java中按两个字段排序?