javax.sql.rowset

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

public interface JdbcRowSet
     
extends RowSet, Joinable

所有标准 JdbcRowSet 实现都必须实现的标准接口。

1.0 概述

ResultSet 对象的包装器使得将该结果集用作 JavaBeans TM 组件成为可能。因此, JdbcRowSet 对象可以是某个 Beans,是可用于组成应用程序的工具。因为 JdbcRowSet 是一个连接的 rowset,也就是说,它使用启用 JDBC 技术的驱动程序来维持它与数据库的连接,所以它也能有效地使驱动程序成为 JavaBeans 组件。

因为它始终连接到其数据库,所以 JdbcRowSet 的实例可以简单地采用在其上进行调用的方法,并依次对其 ResultSet 对象调用这些方法。因此,结果集可以是(举例来说)Swing 应用程序中的一个组件。

JdbcRowSet 对象的另一个优点是可使用它让 ResultSet 对象可滚动和可更新。默认情况下,所有 RowSet 对象都是可滚动的和可更新的。如果使用的驱动程序和数据库不支持结果集的滚动和/或更新,则应用程序可以组装一个带 ResultSet 对象数据的 JdbcRowSet 对象,然后在该 JdbcRowSet 对象上操作,就好像它是 ResultSet 对象一样。

2.0 创建 JdbcRowSet 对象

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

但是在调用 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 实例,它是 ResultSet 对象的一个瘦包装器,而该对象包含了表 TITLES 中书籍类型为传记的所有行。此时,在 jrs 上调用的操作将影响结果集中的各行,该结果集实际上是一个 JavaBeans 组件。

JdbcRowSet 参考实现中的 RowSet 方法 execute 的实现与 CachedRowSetTM 参考实现中的不同,从而导致对已连接和非连接 RowSet 对象的不同要求。


字段摘要
 
从接口 java.sql.ResultSet 继承的字段
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE
 
方法摘要
 void commit()
          每个 JdbcRowSet 都包含一个取自 ResultSetConnection 对象或传递到其构造方法的 JDBC 属性。
 boolean getAutoCommit()
          每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。
 RowSetWarning getRowSetWarnings()
          获取此 JdbcRowSet 对象上的调用报告的第一个警告。
 boolean getShowDeleted()
          获取一个 boolean 值,该值指示标记为删除的行是否会出现在当前行集合中。
 void rollback()
          每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。
 void rollback(Savepoint s)
          每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。
 void setAutoCommit(boolean autoCommit)
          每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。
 void setShowDeleted(boolean b)
          将属性 showDeleted 设置为给定的 boolean 值。
 
从接口 javax.sql.RowSet 继承的方法
addRowSetListener, clearParameters, execute, getCommand, getDataSourceName, getEscapeProcessing, getMaxFieldSize, getMaxRows, getPassword, getQueryTimeout, getTransactionIsolation, getTypeMap, getUrl, getUsername, isReadOnly, removeRowSetListener, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setAsciiStream, setBigDecimal, setBigDecimal, setBinaryStream, setBinaryStream, setBinaryStream, setBinaryStream, setBlob, setBlob, setBlob, setBlob, setBlob, setBlob, setBoolean, setBoolean, setByte, setByte, setBytes, setBytes, setCharacterStream, setCharacterStream, setCharacterStream, setCharacterStream, setClob, setClob, setClob, setClob, setClob, setClob, setCommand, setConcurrency, setDataSourceName, setDate, setDate, setDate, setDate, setDouble, setDouble, setEscapeProcessing, setFloat, setFloat, setInt, setInt, setLong, setLong, setMaxFieldSize, setMaxRows, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNClob, setNClob, setNClob, setNString, setNString, setNull, setNull, setNull, setNull, setObject, setObject, setObject, setObject, setObject, setObject, setPassword, setQueryTimeout, setReadOnly, setRef, setRowId, setRowId, setShort, setShort, setSQLXML, setSQLXML, setString, setString, setTime, setTime, setTime, setTime, setTimestamp, setTimestamp, setTimestamp, setTimestamp, setTransactionIsolation, setType, setTypeMap, setURL, setUrl, setUsername
 
从接口 java.sql.ResultSet 继承的方法
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, close, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getMetaData, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getRef, getRef, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, next, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
 
从接口 java.sql.Wrapper 继承的方法
isWrapperFor, unwrap
 
从接口 javax.sql.rowset.Joinable 继承的方法
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
 

方法详细信息

getShowDeleted

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

出于安全考虑或为了某些部署情况,标准的 rowset 实现可以选择限制此行为。已删除行的可见性是实现定义的,并不表示标准行为。

注:允许保持已删除行可见会使某些标准 JDBC RowSet 实现方法的行为变得复杂。但是,多数 rowset 用户可以简单地忽略此额外细节,因为只有极其特殊的应用程序才会利用此功能。

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

setShowDeleted

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

出于安全考虑或为了某些部署情况,标准的 rowset 实现可以选择限制此行为。这是由实现定义的,并不表示标准行为。

参数:
b - 如果应该显示已删除行,则为 true;否则为 false
抛出:
SQLException - 如果 rowset 实现无法重置已删除行是否应该可见
另请参见:
getShowDeleted()

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 对象上调用此方法
另请参见:
RowSetWarning

commit

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

使自从上一次提交/回滚以来进行的所有更改成为持久更改,并释放此 Connection 对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。

抛出:
SQLException - 如果发生数据库访问错误或者此 JdbcRowSet 内的 Connection 对象处于自动提交模式下
另请参见:
Connection.setAutoCommit(boolean)

getAutoCommit

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

将此 connection 的自动提交模式设置为给定的状态。如果 connection 处于自动提交模式下,则将执行其所有 SQL 语句,并将这些语句作为单独的事务提交。否则,其 SQL 语句将成组地进入通过调用 commit 方法或 rollback 方法终止的事务中。默认情况下,新的 connection 处于自动提交模式下。

抛出:
SQLException - 如果发生数据库访问错误
另请参见:
Connection.getAutoCommit()

setAutoCommit

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

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

抛出:
SQLException - 如果发生数据库访问错误
另请参见:
Connection.setAutoCommit(boolean)

rollback

void rollback()
              throws SQLException
每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。取消在当前事务中进行的所有更改,并释放此 Connection 对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。

抛出:
SQLException - 如果发生数据库访问错误或者此 JdbcRowSet 内的 Connection 对象处于自动提交模式下。
另请参见:
rollback(Savepoint)

rollback

void rollback(Savepoint s)
              throws SQLException
每个 JdbcRowSet 都包含一个取自原始 ResultSetConnection 对象或传递给它的 JDBC 属性。取消在当前事务中进行的所有更改,一直到最后设置的保存点,并释放此 Connection 对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。

抛出:
SQLException - 如果发生数据库访问错误或者此 JdbcRowSet 内的 Connection 对象处于自动提交模式下。
另请参见:
rollback()