Scollable Result Sets
前面用到的ResultSets都是顺序性的,也就是说我们总是通过ResultSet.next()方法
从头到尾的来获取记录.由前面我们都是通过Statement的executeQuery方法来获得ResutSets,
Statement总是通过下面的方法得到
stmt=con.createStatement();
在jdbc1.0中我们只能通过该方法来获得statement,从jdbc2.0以后又引入了一种新的方法.
该方法可以创建可移动或者和更新的ResultSets
createStatement(
int resultSetType,
int resultSetConcurrency )
使用
resultSetType 可以是
* ResultSet.TYPE_FORWARD_ONLY--这是默认的,和jdbc1.0中一样. 游标只能向前移动, 得到的列只可读不能更改.如果Resultset.next()返回false, ResultSet 数据不再有效,一般会自动关闭rs.但是建议手动关闭rs尽快的释放资源.
* ResultSet.TYPE_SCROLL_INSENSITIVE可以使游标前后任意移动.这是静态数据:数据库中对当前行的数据的更改都是不可见的.也就是说,ResulstSet对数据库数据的更改不敏感.
* ResultSet.TYPE_SCROLL_SENSITIVE 可以使游标前后任意移动.这是静态数据:数据库中对当前行的数据的更改都是可见的的.也就是说,ResulstSet对数据库数据的更改敏感.
resultSetConcurrency 可以是
* ResultSet.CONCUR_READ_ONLY - 默认的和jdbc1.0中相同.
* ResultSet.CONCUR_UPDATABLE 通过新的ResultSet的方法使数据改变 .
可更新的ResultSet有其优点当然也有缺陷.这里不在深入的讨论,如果欲得到更多信息
请参阅http://java.sun.com/developer/Books/JDBCTutorial/index.html中的3.3章.
需要注意的是即使驱动支持,ResultSet仍有可能不返回.另外可以使用DatabaseMetaData.supportsResultSetType()
来查看驱动支持的ResultSet的类型.ResultSet.getType()来查看ResultSet的返回类型.
scrollable ResultSet提供以下方法.
* absolute()
* afterLast()
* beforeFirst()
* first()
* getRow()
* isAfterLast()
* isBeforeFirst()
* isFirst()
* isLast()
* last()
* moveToCurrentRow()--只对updatable ResultSet有效.
* moveToInsertRow()--只对 updatable ResultSet有效.
* previous()
* relative()
前面用到的ResultSets都是顺序性的,也就是说我们总是通过ResultSet.next()方法
从头到尾的来获取记录.由前面我们都是通过Statement的executeQuery方法来获得ResutSets,
Statement总是通过下面的方法得到
stmt=con.createStatement();
在jdbc1.0中我们只能通过该方法来获得statement,从jdbc2.0以后又引入了一种新的方法.
该方法可以创建可移动或者和更新的ResultSets
createStatement(
int resultSetType,
int resultSetConcurrency )
使用
resultSetType 可以是
* ResultSet.TYPE_FORWARD_ONLY--这是默认的,和jdbc1.0中一样. 游标只能向前移动, 得到的列只可读不能更改.如果Resultset.next()返回false, ResultSet 数据不再有效,一般会自动关闭rs.但是建议手动关闭rs尽快的释放资源.
* ResultSet.TYPE_SCROLL_INSENSITIVE可以使游标前后任意移动.这是静态数据:数据库中对当前行的数据的更改都是不可见的.也就是说,ResulstSet对数据库数据的更改不敏感.
* ResultSet.TYPE_SCROLL_SENSITIVE 可以使游标前后任意移动.这是静态数据:数据库中对当前行的数据的更改都是可见的的.也就是说,ResulstSet对数据库数据的更改敏感.
resultSetConcurrency 可以是
* ResultSet.CONCUR_READ_ONLY - 默认的和jdbc1.0中相同.
* ResultSet.CONCUR_UPDATABLE 通过新的ResultSet的方法使数据改变 .
可更新的ResultSet有其优点当然也有缺陷.这里不在深入的讨论,如果欲得到更多信息
请参阅http://java.sun.com/developer/Books/JDBCTutorial/index.html中的3.3章.
需要注意的是即使驱动支持,ResultSet仍有可能不返回.另外可以使用DatabaseMetaData.supportsResultSetType()
来查看驱动支持的ResultSet的类型.ResultSet.getType()来查看ResultSet的返回类型.
scrollable ResultSet提供以下方法.
* absolute()
* afterLast()
* beforeFirst()
* first()
* getRow()
* isAfterLast()
* isBeforeFirst()
* isFirst()
* isLast()
* last()
* moveToCurrentRow()--只对updatable ResultSet有效.
* moveToInsertRow()--只对 updatable ResultSet有效.
* previous()
* relative()