- 所有超级接口:
-
AutoCloseable
,Joinable
,ResultSet
,RowSet
,Wrapper
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
方法尚未成功执行,则在行集上除了execute
和close
之外,不能调用任何其他方法。所有其他公共方法将抛出异常。
但是,在调用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
-
Field Summary
Fields declared in interface 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
commit()
每个JdbcRowSet
包含一个来自传递给其构造函数的ResultSet
或JDBC属性的Connection
对象。boolean
每个JdbcRowSet
包含一个来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。检索由此JdbcRowSet
对象调用报告的第一个警告。boolean
检索一个boolean
,指示标记为删除的行是否出现在当前行集中。void
rollback()
每个JdbcRowSet
包含一个来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。void
每个JdbcRowSet
包含一个来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。void
setAutoCommit
(boolean autoCommit) 每个JdbcRowSet
包含一个来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。void
setShowDeleted
(boolean b) 将属性showDeleted
设置为给定的boolean
值。Methods declared in interface javax.sql.rowset.Joinable
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
Methods declared in interface 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, 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, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
Methods declared in interface 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
Methods declared in interface java.sql.Wrapper
isWrapperFor, unwrap
-
Method Details
-
getShowDeleted
检索一个boolean
,指示标记为删除的行是否出现在当前行集中。如果返回true
,则已删除的行将与当前行一起可见。如果返回false
,则行不会与当前行集一起可见。默认值为false
。标准行集实现可能会出于安全考虑或特定部署方案的考虑而选择限制此行为。已删除行的可见性是由实现定义的,并不代表标准行为。
注意:允许已删除行保持可见会使一些标准JDBC
RowSet
实现方法的行为变得复杂。但是,大多数行集用户可以简单地忽略这个额外细节,因为只有非常专业的应用程序可能希望利用此功能。- 返回:
-
如果已删除行可见,则为
true
;否则为false
- 抛出:
-
SQLException
- 如果行集实现无法确定已标记为删除的行是否保持可见 - 参见:
-
setShowDeleted
将属性showDeleted
设置为给定的boolean
值。此属性确定已标记为删除的行是否继续出现在当前行集中。如果值设置为true
,则已删除的行将立即与当前行集一起可见。如果值设置为false
,则已删除的行将在当前行集中设置为不可见。标准行集实现可能会出于安全考虑或特定部署方案的考虑而选择限制此行为。这是留给实现定义的,不代表标准行为。
- 参数:
-
b
- 如果应显示已删除行,则为true
;否则为false
- 抛出:
-
SQLException
- 如果行集实现无法重置已删除行是否可见 - 参见:
-
getRowSetWarnings
检索由此JdbcRowSet
对象调用报告的第一个警告。如果在此JdbcRowSet
对象上报告了第二个警告,则它将链接到第一个警告,并可以通过调用第一个警告上的方法RowSetWarning.getNextWarning
来检索。在此JdbcRowSet
对象上的后续警告将链接到方法RowSetWarning.getNextWarning
返回的RowSetWarning
对象。每次读取新行时,警告链将自动清除。不可对已关闭的RowSet
对象调用此方法;这样做将导致抛出SQLException
。由于它始终连接到其数据源,
JdbcRowSet
对象可以依赖于存在活动的Statement
、Connection
和ResultSet
实例。这意味着应用程序可以通过调用它们提供的getNextWarning
方法获取额外的SQLWarning
通知。断开连接的Rowset
对象,如CachedRowSet
对象,无法访问这些getNextWarning
方法。- 返回:
-
报告在此
JdbcRowSet
对象上的第一个RowSetWarning
对象,如果没有则为null
- 抛出:
-
SQLException
- 如果在已关闭的JdbcRowSet
对象上调用此方法 - 参见:
-
commit
每个JdbcRowSet
包含一个来自传递给其构造函数的ResultSet
或JDBC属性的Connection
对象。此方法包装Connection
的提交方法,以允许灵活的自动提交或非自动提交事务控制支持。使自上次提交/回滚以来所做的所有更改永久化,并释放此Connection对象当前持有的任何数据库锁。仅当已禁用自动提交模式时才应使用此方法。
- 抛出:
-
SQLException
- 如果发生数据库访问错误或此JdbcRowSet
中的Connection对象处于自动提交模式 - 参见:
-
getAutoCommit
每个JdbcRowSet
包含来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。此方法包装了Connection
的getAutoCommit
方法,以允许应用程序确定JdbcRowSet
的事务行为。将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式,则所有其SQL语句将作为单独的事务执行和提交。否则,其SQL语句将被分组到由调用方法commit或方法rollback终止的事务中。默认情况下,新连接处于自动提交模式。
- 返回:
-
true
如果启用了自动提交;否则false
- 抛出:
-
SQLException
- 如果发生数据库访问错误 - 参见:
-
setAutoCommit
每个JdbcRowSet
包含来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。此方法包装了Connection
的getAutoCommit
方法,以允许应用程序设置JdbcRowSet
的事务行为。设置此
Connection
对象的当前自动提交模式。- 参数:
-
autoCommit
-true
启用自动提交;false
禁用自动提交 - 抛出:
-
SQLException
- 如果发生数据库访问错误 - 参见:
-
rollback
每个JdbcRowSet
包含来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。撤消当前事务中所做的所有更改,并释放此Connection
对象当前持有的任何数据库锁。仅当禁用自动提交模式时才应使用此方法。- 抛出:
-
SQLException
- 如果发生数据库访问错误或此Connection
对象在此JdbcRowSet
中处于自动提交模式。 - 参见:
-
rollback
每个JdbcRowSet
包含来自原始ResultSet
或传递给它的JDBC属性的Connection
对象。撤消当前事务中对最后设置的保存点所做的所有更改,并释放此Connection
对象当前持有的任何数据库锁。仅当禁用自动提交模式时才应使用此方法。- 参数:
-
s
- 要回滚到的Savepoint
- 抛出:
-
SQLException
- 如果发生数据库访问错误或此Connection
对象在此JdbcRowSet
中处于自动提交模式。 - 参见:
-