所有标准 JdbcRowSet
实现都必须实现的标准接口。
ResultSet
对象的包装器使得将该结果集用作 JavaBeans
TM 组件成为可能。因此,
JdbcRowSet
对象可以是某个 Beans,是可用于组成应用程序的工具。因为
JdbcRowSet
是一个连接的 rowset,也就是说,它使用启用 JDBC 技术的驱动程序来维持它与数据库的连接,所以它也能有效地使驱动程序成为 JavaBeans 组件。
因为它始终连接到其数据库,所以 JdbcRowSet
的实例可以简单地采用在其上进行调用的方法,并依次对其 ResultSet
对象调用这些方法。因此,结果集可以是(举例来说)Swing 应用程序中的一个组件。
JdbcRowSet
对象的另一个优点是可使用它让 ResultSet
对象可滚动和可更新。默认情况下,所有 RowSet
对象都是可滚动的和可更新的。如果使用的驱动程序和数据库不支持结果集的滚动和/或更新,则应用程序可以组装一个带 ResultSet
对象数据的 JdbcRowSet
对象,然后在该 JdbcRowSet
对象上操作,就好像它是 ResultSet
对象一样。
JdbcRowSet
对象JdbcRowSet
接口的参考实现
JdbcRowSetImpl
提供了默认构造方法的实现。使用默认值初始化新的实例,可根据需要使用新值设置这些默认值。在调用新实例的
execute
方法之前,它实际上无法真正发挥作用。通常,此方法执行以下操作:
PreparedStatement
对象并设置其所有占位符参数 ResultSet
对象 execute
方法执行成功,则使用以下内容设置适当的私有
JdbcRowSet
字段:
Connection
对象 -- rowset 和数据库之间的连接 PreparedStatement
对象 -- 生成结果集的查询 ResultSet
对象 -- rowset 的命令所生成的和正在生成的结果集,实际上是一个 JavaBeans 组件 execute
方法,此时除
execute
和
close
以外,不能在该 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
的实现与 CachedRowSet
TM 参考实现中的不同,从而导致对已连接和非连接 RowSet
对象的不同要求。
字段摘要 |
---|
方法摘要 | |
---|---|
void |
commit() 每个 JdbcRowSet 都包含一个取自 ResultSet 的 Connection 对象或传递到其构造方法的 JDBC 属性。 |
boolean |
getAutoCommit() 每个 JdbcRowSet 都包含一个取自原始 ResultSet 的 Connection 对象或传递给它的 JDBC 属性。 |
RowSetWarning |
getRowSetWarnings() 获取此 JdbcRowSet 对象上的调用报告的第一个警告。 |
boolean |
getShowDeleted() 获取一个 boolean 值,该值指示标记为删除的行是否会出现在当前行集合中。 |
void |
rollback() 每个 JdbcRowSet 都包含一个取自原始 ResultSet 的 Connection 对象或传递给它的 JDBC 属性。 |
void |
rollback(Savepoint s) 每个 JdbcRowSet 都包含一个取自原始 ResultSet 的 Connection 对象或传递给它的 JDBC 属性。 |
void |
setAutoCommit(boolean autoCommit) 每个 JdbcRowSet 都包含一个取自原始 ResultSet 的 Connection 对象或传递给它的 JDBC 属性。 |
void |
setShowDeleted(boolean b) 将属性 showDeleted 设置为给定的 boolean 值。 |
从接口 java.sql.Wrapper 继承的方法 |
---|
isWrapperFor, unwrap |
从接口 javax.sql.rowset.Joinable 继承的方法 |
---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
方法详细信息 |
---|
boolean getShowDeleted() throws SQLException
boolean
值,该值指示标记为删除的行是否会出现在当前行集合中。如果返回
true
,则已删除行与当前行一起可见。如果返回
false
,则已删除行与当前行集合一起不可见。默认值为
false
。
出于安全考虑或为了某些部署情况,标准的 rowset 实现可以选择限制此行为。已删除行的可见性是实现定义的,并不表示标准行为。
注:允许保持已删除行可见会使某些标准 JDBC RowSet
实现方法的行为变得复杂。但是,多数 rowset 用户可以简单地忽略此额外细节,因为只有极其特殊的应用程序才会利用此功能。
true
;否则返回
false
SQLException
- 如果 rowset 实现无法确定是否使标记为删除的行保持可见
setShowDeleted(boolean)
void setShowDeleted(boolean b) throws SQLException
showDeleted
设置为给定的
boolean
值。此属性确定标记为删除的行是否继续出现在当前行集合中。如果将值设置为
true
,则已删除行与当前行集合一起立即可见。如果将值设置为
false
,则已删除行与当前行集合一起被设置为不可见。
出于安全考虑或为了某些部署情况,标准的 rowset 实现可以选择限制此行为。这是由实现定义的,并不表示标准行为。
b
- 如果应该显示已删除行,则为
true
;否则为
false
SQLException
- 如果 rowset 实现无法重置已删除行是否应该可见
getShowDeleted()
RowSetWarning getRowSetWarnings() throws SQLException
JdbcRowSet
对象上的调用报告的第一个警告。如果此
JdbcRowSet
对象上报告了第二个警告,则将它链接到第一个警告,并可通过在第一个警告上调用方法
RowSetWarning.getNextWarning
来获取该警告。此
JdbcRowSet
对象上的后续警告会被链接到方法
RowSetWarning.getNextWarning
返回的
RowSetWarning
对象。 每次读取新行时,都会自动清除警告链。不可以在已经关闭的
RowSet
对象上调用此方法;这样做将导致抛出
SQLException
。
因为 JdbcRowSet
对象始终连接到其数据源,所以该对象可以依靠现有的活动 Statement
、Connection
和 ResultSet
实例。这意味着应用程序可以通过调用 getNextWarning
方法来获得所提供的附加 SQLWarning
通知。非连接 Rowset
对象(如 CachedRowSet
对象)不必访问这些 getNextWarning
方法。
JdbcRowSet
对象上报告第一个
RowSetWarning
对象,如果没有则为
null
SQLException
- 如果在已关闭的
JdbcRowSet
对象上调用此方法
RowSetWarning
void commit() throws SQLException
JdbcRowSet
都包含一个取自
ResultSet
的
Connection
对象或传递到其构造方法的 JDBC 属性。此方法包装
Connection
提交方法,以允许灵活的自动提交或非自动提交事务控制支持。
使自从上一次提交/回滚以来进行的所有更改成为持久更改,并释放此 Connection 对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。
SQLException
- 如果发生数据库访问错误或者此
JdbcRowSet
内的 Connection 对象处于自动提交模式下
Connection.setAutoCommit(boolean)
boolean getAutoCommit() throws SQLException
JdbcRowSet
都包含一个取自原始
ResultSet
的
Connection
对象或传递给它的 JDBC 属性。此方法包装
Connection
的
getAutoCommit
方法,以允许应用程序确定
JdbcRowSet
的事务行为。
将此 connection 的自动提交模式设置为给定的状态。如果 connection 处于自动提交模式下,则将执行其所有 SQL 语句,并将这些语句作为单独的事务提交。否则,其 SQL 语句将成组地进入通过调用 commit 方法或 rollback 方法终止的事务中。默认情况下,新的 connection 处于自动提交模式下。
SQLException
- 如果发生数据库访问错误
Connection.getAutoCommit()
void setAutoCommit(boolean autoCommit) throws SQLException
JdbcRowSet
都包含一个取自原始
ResultSet
的
Connection
对象或传递给它的 JDBC 属性。此方法包装
Connection
的
getAutoCommit
方法,以允许应用程序设置
JdbcRowSet
的事务行为。
设置此 Connection
对象的当前自动提交模式。
SQLException
- 如果发生数据库访问错误
Connection.setAutoCommit(boolean)
void rollback() throws SQLException
JdbcRowSet
都包含一个取自原始
ResultSet
的
Connection
对象或传递给它的 JDBC 属性。取消在当前事务中进行的所有更改,并释放此
Connection
对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。
SQLException
- 如果发生数据库访问错误或者此
JdbcRowSet
内的
Connection
对象处于自动提交模式下。
rollback(Savepoint)
void rollback(Savepoint s) throws SQLException
JdbcRowSet
都包含一个取自原始
ResultSet
的
Connection
对象或传递给它的 JDBC 属性。取消在当前事务中进行的所有更改,一直到最后设置的保存点,并释放此
Connection
对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。
SQLException
- 如果发生数据库访问错误或者此
JdbcRowSet
内的
Connection
对象处于自动提交模式下。
rollback()