用 JDBC(包括 Oracle JDBC 扩展)时,没有直接的(即标准的)方法可以使用 ResultSet 或 RowSet 获得查询所返回的行数。但是可以通过很少几行代码使用 Scrollable ResultSet 或 Cached RowSet 来获得此结果。以下列出了可以使用的不同方法的详细内容。
- 一种方法是在实际查询前执行 "SELECT COUNT(*)..."。
这意味着数据库引擎必须对相同的数据进行两次分析(一次用于计数,一次用于数据本身)。
- 第二种方法使用 JDBC 2.0:
- 一种使用 Scrollable ResultSet
- 另一种使用 Cached RowSet 与普通(不可滚动)ResultSet 的组合。
JDBC 方法允许我们获得查询的行数而不必扫描所有的行或执行单独的 SELECT COUNT(*)。移到 Scrollable ResultSet/Cached RowSet 的尾部并获取其位置(resultset.last()/cachedRowset.last() 和resultset.getRow()/cachedRowset.getRow()),即可完成所需的工作。RowSet 扩展了 ResultSet 接口,因此我们可以使用普通的 ResultSet(而不是可滚动的)。
使用 Scrollable ResultSet 的说明:
- 如果 ResultSet 非常大,则 resultset.last() 有可能是非常费时的操作,因为它将使用服务器端的更多资源。因此,除非确实需要可滚动结果集,应避免使用这种方法。
- Oracle JDBC 驱动程序将使用 resultset.getRow() 返回正确的计数。但是其他供应商的实现方法可能会由resultset.getRow() 返回零。
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs.last(); int rowcount = rs.getRow();
OracleCachedRowSet ocrs = new OracleCachedRowSet(); ocrs.populate(rs); ocrs.last(); int rowcount = ocrs.getRow(); if (ocrs != null) ocrs.close();
相关推荐
通过反射从数据库返回集合ResultSet中得到实体对象的list集合
获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用...
ResultSet 返回的实际上就是一张数据表,有一个指针指向数据表的第一行的前面, * 可以调用next()方法检测下一行是否有效,若有效,返回true,且指针下移, * 相当于iterator 对象的 hasNext() 和 next()方法的...
如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()方法,显示出各个字段值。 如果不支持JDBC2.0,则可利用向量Vector按行取出JTable中数据。自定义一...
//获得sql的消息并输出,这个估计很多人都需要 SQLWarning sqlWarning = callableStatement.getWarnings(); while (sqlWarning != null) { System.out.println("sqlWarning.getErrorCode() = " + sqlWarning.get...
// 首先尝试获取可滚动的 Statement, 然后才是普通 Statement Statement updatableStmt = getUpdatableStatement(); if (updatableStmt != null) return updatableStmt; try { Statement statement = get...
在MySQL中,可以通过SELECT COUNT(*) FROM table_name查询某个表中有多少条记录。如果想知道某个数据库中所有别的记录总数应该怎么做呢?本文给出两种可行的Java程序,解决... import java.sql.ResultSet; import java
import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.ComboBoxModel; import real...
booleanprevious()throwsSQLException 将指针移动到此ResultSet对象的上一行,如果不存在,那么返回false booleannext()throwsSQLException 将指针移动到此ResultSet对象的下一行,如果不存在,那么返回false ...
//从数据库获取数据方法 public Vector getData(){ Vector vector=new Vector(); try { //驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //连接数据库 con=...
4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新ResultSet 4.13.2 插入一新行 4.13.3 删除行 4.14 观察ResultSet中的变化 4.15 RowSet对象 4.16 创建RowSet和设置属性 4.16.1 RowSet事件 4.17 元...
7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...
7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...
JAVA银行管理系统设计全文共8页,当前为第1页。JAVA银行管理系统设计全文共8页,当前为第1页。JAVA银行管理系统设计 JAVA银行管理系统设计全文共8页,当前为第1页。 JAVA银行管理系统设计全文共8页,当前为第1页。 ...
java 连接 mysql mysql-connector-java-5.1.32.zip - 解包大小为 946.3 KB 连接代码 @Test public void testFindAll() throws ClassNotFoundException, SQLException { //1. 注册数据库驱动(Driver) - ...
Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。...
笔者可以描述这样一个场景:有一天你上网完全可以不用IE 或者NETSCAPE,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过UO,也许你就知道那种感觉了,但是JAVA做成的东西一定会超过UO的,...
4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新ResultSet 4.13.2 插入一新行 4.13.3 删除行 4.14 观察ResultSet中的变化 4.15 RowSet对象 4.16 创建RowSet和设置属性 4.16.1 RowSet事件 4.17 元...
4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新ResultSet 4.13.2 插入一新行 4.13.3 删除行 4.14 观察ResultSet中的变化 4.15 RowSet对象 4.16 创建RowSet和设置属性 4.16.1 RowSet事件 4.17 元...