`
chenhua_1984
  • 浏览: 1235925 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java获取resultset返回行

阅读更多

用 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(); 

 

 

使用 Oracle JDBC Cached RowSet

OracleCachedRowSet ocrs = new OracleCachedRowSet();

ocrs.populate(rs);

ocrs.last(); 

int rowcount = ocrs.getRow();

if (ocrs != null) 
  ocrs.close();

 

分享到:
评论

相关推荐

    通过反射从数据库返回集合ResultSet中得到实体对象的list集合

    通过反射从数据库返回集合ResultSet中得到实体对象的list集合

    java jdk实列宝典 光盘源代码

    获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用...

    使用JDBC从数据库中查询数据的方法

    ResultSet 返回的实际上就是一张数据表,有一个指针指向数据表的第一行的前面, * 可以调用next()方法检测下一行是否有效,若有效,返回true,且指针下移, * 相当于iterator 对象的 hasNext() 和 next()方法的...

    Java数据库查询结果的输出

     如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()方法,显示出各个字段值。  如果不支持JDBC2.0,则可利用向量Vector按行取出JTable中数据。自定义一...

    JAVA调用存储过程

    //获得sql的消息并输出,这个估计很多人都需要 SQLWarning sqlWarning = callableStatement.getWarnings(); while (sqlWarning != null) { System.out.println("sqlWarning.getErrorCode() = " + sqlWarning.get...

    数据库工具类DatabaseUtil.java

    // 首先尝试获取可滚动的 Statement, 然后才是普通 Statement Statement updatableStmt = getUpdatableStatement(); if (updatableStmt != null) return updatableStmt; try { Statement statement = get...

    Java实现获得MySQL数据库中所有表的记录总数可行方法

    在MySQL中,可以通过SELECT COUNT(*) FROM table_name查询某个表中有多少条记录。如果想知道某个数据库中所有别的记录总数应该怎么做呢?本文给出两种可行的Java程序,解决... import java.sql.ResultSet; import java

    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...

    计算机程序设计(Java)-教案--单元十--数据库编程技术.docx.docx

    booleanprevious()throwsSQLException 将指针移动到此ResultSet对象的上一行,如果不存在,那么返回false booleannext()throwsSQLException 将指针移动到此ResultSet对象的下一行,如果不存在,那么返回false ...

    java通讯录系统代码

    //从数据库获取数据方法 public Vector getData(){ Vector vector=new Vector(); try { //驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //连接数据库 con=...

    Java数据库编程宝典3

    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 元...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...

    JAVA银行管理系统设计.docx

    JAVA银行管理系统设计全文共8页,当前为第1页。JAVA银行管理系统设计全文共8页,当前为第1页。JAVA银行管理系统设计 JAVA银行管理系统设计全文共8页,当前为第1页。 JAVA银行管理系统设计全文共8页,当前为第1页。 ...

    mysql-connector-java-5.1.32.zip

    java 连接 mysql mysql-connector-java-5.1.32.zip - 解包大小为 946.3 KB 连接代码 @Test public void testFindAll() throws ClassNotFoundException, SQLException { //1. 注册数据库驱动(Driver) - ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。...

    java程序是怎么操作数据库的,可以以常用据库为例,求详细解答,最好能举例。

    笔者可以描述这样一个场景:有一天你上网完全可以不用IE 或者NETSCAPE,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过UO,也许你就知道那种感觉了,但是JAVA做成的东西一定会超过UO的,...

    Java数据库编程宝典2

    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 元...

    Java数据库编程宝典4

    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 元...

Global site tag (gtag.js) - Google Analytics