当前位置:  开发笔记 > 编程语言 > 正文

如何在JDBC中获取行数?

如何解决《如何在JDBC中获取行数?》经验,为你挑选了4个好方法。

我已经执行了JDBC查询来获取结果集.在迭代之前,我想快速找出返回的行数.我怎样才能以高性能做到这一点?

我正在使用Java 6,Oracle 11g和最新的Oracle JDBC驱动程序.



1> cletus..:

您将不得不将此作为单独的查询执行,例如:

SELECT COUNT(1) FROM table_name

一些JDBC驱动程序可能会告诉您,但这是可选行为,更重要的是,驱动程序可能还不知道.这可能是由于查询的优化方式,例如Oracle中的两个示例执行策略是尽可能快地获取所有行或尽快获得第一行.

如果您执行两个单独的查询(一个是计数而另一个是查询),那么您需要在同一个事务中执行这些查询.这在Oracle上运行良好,但在其他数据库上可能会有问题(例如,SQL Server将显示未提交的数据或阻止外部未提交的更新,具体取决于您的隔离级别,而Oracle支持隔离级别,为您提供事务一致的视图.数据没有阻止外部更新).

通常情况下,有多少行并不重要.通常,这种查询是批处理或分页的,无论哪种方式,您都可以以加载/处理的行的形式获得进度信息,并且可以检测结果集的结尾(显然).



2> Jon Skeet..:

简短的回答:你做不到.

答案很长:你不能,部分是因为数据库可能懒惰地评估查询,只是在你要求时返回行.

编辑:使用可滚动的ResultSet你可以:)

实际上,我很早以前就已经在Java数据库新闻组中提出了这个问题(早在2001年!)并且有一些有用的回答.



3> thezar..:
ResultSet rs = stmt.executeQuery(sql);
int rowCount = rs.last() ? rs.getRow() : 0; // Number of rows in result set. Don't forget to set cyrsor to beforeFirst() row! :)


工作得很好.您应该添加为此需要可滚动的结果集.

4> 小智..:

要从JDBC获取行数:

ResultSet rs = st.executeQuery("select count(*) from TABLE_NAME");
rs.next();
int count = rs.getInt(1);


没有人要求表中有多少行,问题是结果集中有多少行.
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有