Module java.sql.rowset
Package javax.sql.rowset

Interface JdbcRowSet

所有超级接口:
AutoCloseable, Joinable, ResultSet, RowSet, Wrapper

public interface JdbcRowSet extends RowSet, Joinable
所有标准的JdbcRowSet实现必须实现的标准接口。

1.0 概述

ResultSet对象的包装器,使得可以将结果集作为JavaBeans组件使用。因此,JdbcRowSet对象可以成为工具提供的用于构建应用程序的Beans之一。由于JdbcRowSet是一个连接的行集,即它使用支持JDBC技术的驱动程序不断地保持与数据库的连接,它还有效地将驱动程序作为JavaBeans组件。

由于它始终连接到数据库,JdbcRowSet的实例可以简单地接受调用,并依次在其ResultSet对象上调用这些调用。因此,例如,结果集可以成为Swing应用程序中的一个组件。

JdbcRowSet对象的另一个优点是,它可以用于使ResultSet对象可滚动和可更新。所有RowSet对象默认都是可滚动和可更新的。如果正在使用的驱动程序和数据库不支持结果集的滚动和/或更新,应用程序可以使用ResultSet对象的数据填充JdbcRowSet对象,然后像操作ResultSet对象一样操作JdbcRowSet对象。

2.0 创建JdbcRowSet对象

JdbcRowSet接口的参考实现JdbcRowSetImpl提供了默认构造函数的实现。新实例将使用默认值进行初始化,可以根据需要设置新值。在调用其execute方法之前,新实例实际上并不具备功能。通常,此方法执行以下操作:
  • 与数据库建立连接
  • 创建PreparedStatement对象并设置其中的任何占位符参数
  • 执行语句以创建ResultSet对象
如果execute方法成功,它将使用以下内容设置适当的私有JdbcRowSet字段:
  • Connection对象 -- 行集与数据库之间的连接
  • PreparedStatement对象 -- 生成结果集的查询
  • ResultSet对象 -- 行集命令生成的结果集,实际上成为JavaBeans组件
如果这些字段尚未设置,即execute方法尚未成功执行,则在行集上除了executeclose之外,不能调用任何其他方法。所有其他公共方法将抛出异常。

但是,在调用execute方法之前,必须设置用于建立连接的命令和属性。以下代码片段创建一个JdbcRowSetImpl对象,设置命令和连接属性,设置占位符参数,然后调用execute方法。

     JdbcRowSetImpl jrs = new JdbcRowSetImpl();
     jrs.setCommand("SELECT * FROM TITLES WHERE TYPE = ?");
     jrs.setURL("jdbc:myDriver:myAttribute");
     jrs.setUsername("cervantes");
     jrs.setPassword("sancho");
     jrs.setString(1, "BIOGRAPHY");
     jrs.execute();
 
变量jrs现在表示一个JdbcRowSetImpl的实例,它是一个围绕包含表TITLES中所有行的ResultSet对象的薄包装器,其中书籍类型为传记。此时,在jrs上调用的操作将影响结果集中的行,这实际上是一个JavaBeans组件。

JdbcRowSet参考实现中的execute方法的实现与CachedRowSet参考实现中的实现不同,以满足连接和断开连接的RowSet对象的不同要求。

自版本:
1.5
  • Method Details

    • getShowDeleted

      boolean getShowDeleted() throws SQLException
      检索一个boolean,指示标记为删除的行是否出现在当前行集中。如果返回true,则已删除的行将与当前行一起可见。如果返回false,则行不会与当前行集一起可见。默认值为false

      标准行集实现可能会出于安全考虑或特定部署方案的考虑而选择限制此行为。已删除行的可见性是由实现定义的,并不代表标准行为。

      注意:允许已删除行保持可见会使一些标准JDBC RowSet实现方法的行为变得复杂。但是,大多数行集用户可以简单地忽略这个额外细节,因为只有非常专业的应用程序可能希望利用此功能。

      返回:
      如果已删除行可见,则为true;否则为false
      抛出:
      SQLException - 如果行集实现无法确定已标记为删除的行是否保持可见
      参见:
    • setShowDeleted

      void setShowDeleted(boolean b) throws SQLException
      将属性showDeleted设置为给定的boolean值。此属性确定已标记为删除的行是否继续出现在当前行集中。如果值设置为true,则已删除的行将立即与当前行集一起可见。如果值设置为false,则已删除的行将在当前行集中设置为不可见。

      标准行集实现可能会出于安全考虑或特定部署方案的考虑而选择限制此行为。这是留给实现定义的,不代表标准行为。

      参数:
      b - 如果应显示已删除行,则为true;否则为false
      抛出:
      SQLException - 如果行集实现无法重置已删除行是否可见
      参见:
    • getRowSetWarnings

      RowSetWarning getRowSetWarnings() throws SQLException
      检索由此JdbcRowSet对象调用报告的第一个警告。如果在此JdbcRowSet对象上报告了第二个警告,则它将链接到第一个警告,并可以通过调用第一个警告上的方法RowSetWarning.getNextWarning来检索。在此JdbcRowSet对象上的后续警告将链接到方法RowSetWarning.getNextWarning返回的RowSetWarning对象。每次读取新行时,警告链将自动清除。不可对已关闭的RowSet对象调用此方法;这样做将导致抛出SQLException

      由于它始终连接到其数据源,JdbcRowSet对象可以依赖于存在活动的StatementConnectionResultSet实例。这意味着应用程序可以通过调用它们提供的getNextWarning方法获取额外的SQLWarning通知。断开连接的Rowset对象,如CachedRowSet对象,无法访问这些getNextWarning方法。

      返回:
      报告在此JdbcRowSet对象上的第一个RowSetWarning对象,如果没有则为null
      抛出:
      SQLException - 如果在已关闭的JdbcRowSet对象上调用此方法
      参见:
    • commit

      void commit() throws SQLException
      每个JdbcRowSet包含一个来自传递给其构造函数的ResultSet或JDBC属性的Connection对象。此方法包装Connection的提交方法,以允许灵活的自动提交或非自动提交事务控制支持。

      使自上次提交/回滚以来所做的所有更改永久化,并释放此Connection对象当前持有的任何数据库锁。仅当已禁用自动提交模式时才应使用此方法。

      抛出:
      SQLException - 如果发生数据库访问错误或此JdbcRowSet中的Connection对象处于自动提交模式
      参见:
    • getAutoCommit

      boolean getAutoCommit() throws SQLException
      每个JdbcRowSet包含来自原始ResultSet或传递给它的JDBC属性的Connection对象。此方法包装了ConnectiongetAutoCommit方法,以允许应用程序确定JdbcRowSet的事务行为。

      将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式,则所有其SQL语句将作为单独的事务执行和提交。否则,其SQL语句将被分组到由调用方法commit或方法rollback终止的事务中。默认情况下,新连接处于自动提交模式。

      返回:
      true如果启用了自动提交;否则false
      抛出:
      SQLException - 如果发生数据库访问错误
      参见:
    • setAutoCommit

      void setAutoCommit(boolean autoCommit) throws SQLException
      每个JdbcRowSet包含来自原始ResultSet或传递给它的JDBC属性的Connection对象。此方法包装了ConnectiongetAutoCommit方法,以允许应用程序设置JdbcRowSet的事务行为。

      设置此Connection对象的当前自动提交模式。

      参数:
      autoCommit - true启用自动提交;false禁用自动提交
      抛出:
      SQLException - 如果发生数据库访问错误
      参见:
    • rollback

      void rollback() throws SQLException
      每个JdbcRowSet包含来自原始ResultSet或传递给它的JDBC属性的Connection对象。撤消当前事务中所做的所有更改,并释放此Connection对象当前持有的任何数据库锁。仅当禁用自动提交模式时才应使用此方法。
      抛出:
      SQLException - 如果发生数据库访问错误或此Connection对象在此JdbcRowSet中处于自动提交模式。
      参见:
    • rollback

      void rollback(Savepoint s) throws SQLException
      每个JdbcRowSet包含来自原始ResultSet或传递给它的JDBC属性的Connection对象。撤消当前事务中对最后设置的保存点所做的所有更改,并释放此Connection对象当前持有的任何数据库锁。仅当禁用自动提交模式时才应使用此方法。
      参数:
      s - 要回滚到的Savepoint
      抛出:
      SQLException - 如果发生数据库访问错误或此Connection对象在此JdbcRowSet中处于自动提交模式。
      参见: