java中如何获取结果集ResutSet的总条数?

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:09:41
如果不用以下方式ResultSet rs.last(); int tiaoshu=rs.getRow();那么有其它的方法吗?

既然你已经有方法了,就用那个,JDBC 规范并没有强制驱动程序在迭代游标时必须保持稳定,换句话说,我自己实现的数据库完全可以给你一行然后忘记它,也可以你要一行我看还有时就返回数据,你不问我时我根本就不去检查还有多少行。你看完全最后一行之后还想知道第一行,我完全可以抛出一个状态异常告诉你这功能不支持.
之所以这么约定,那是因为基于性能上的考虑,很多时候我们不应该提前知道那些,因为它会导致数据库提供分配临时空间给这些数据,比如我们开发时在 SQL 工具中写一条 SQL 看有什么数据,但忘记了加条件,结果千万条数据 loading,内存用光了,电脑反应慢,这就是错误的设计,因为这个数据库客户端工具在并非必要地情况下尝试加载所有数据导致性能问题,在客户端加载数据的同时,数据库本身也需要分配临时空间给数据。
因为想知道有多少行本身就不是必须提供的功能。文档中提到了一句话:
@exception SQLFeatureNotSupportedException if the JDBC driver does not support this method
意思是说这个功能是可选的,数据库或它的驱动可以不提供。
一个简单的办法就是取数据前可以 select count(*) 一下。

java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:

PreparedStatement pstate = null;//声明一个PreparedStatement类
String sql = "SELECT * FROM CHE_GOOD WHERE TITLE LIKE ?";//从数据库中查询
pstate = con.prepareStatement(sql,
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY