Java技术回顾之JDBC:ResultSet和RowSet

 ResulSet类型和选项

Connection提供了三种不同的方法来创建Statement:
createStatement()
createStatement(int resultSetType, int resultSetConcurrency)
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
其中resultSetType,resultSetConcurrency,resultSetHoldability是三个很让人迷惑的参数,用于设置结果集的一些选项。三个参数的可选值均定义在ResultSet接口中。

resultSetType 结果集类型
ResultSet.TYPE_FORWARD_ONLY 表示结果集只能向前滚动。即我们只能通过ResultSet的next()方法逐行读取数据。
ResultSet.TYPE_SCROLL_INSENSITIVE 和 ResultSet.TYPE_SCROLL_SENSITIVE 这两者均表示结果集可以向前或向后滚动。即我们除了通过ResultSet的next()方法读取数据外,还可以通过first(),last(),preview()等方法自由定位数据。两者的区别在于前者对数据库的修改不敏感,即ResultSet打开后,此时有其他程序更新了数据库,在结果集中并不会反映出来。比如,其他程序插入了一条新数据,在本结果集中不会读取它。而后者则相反,它对数据库的修改敏感,即ResultSet打开后,其他程序对数据库的修改,它的后续读取中能够反映出来。

resultSetConcurrency 结果集是否可更新
ResultSet.CONCUR_READ_ONLY 结果集是只读的,不可更新。
ResultSet.CONCUR_UPDATABLE 结果集可更新。即ResultSet打开后,可以在它的基础上调用ResultSet上的updateXXX,insertRow,deleteRow等方法修改结果集。

resultSetHoldability 结果集提交后是否还是打开的
ResultSet.HOLD_CURSORS_OVER_COMMIT 当Connection的commit调用后,ResultSet不被关闭,还是打开状态。
ResultSet.CLOSE_CURSORS_AT_COMMIT 当Connection的commit调用后,ResultSet被关闭。

RowSet

ResultSet在数据操作过程中要始终保持数据库的连接,使得JDBC在某些场合使用上存在一些性能问题,而在微软平台的ADO技术中早就存在各种断开连接的数据操作对象。为此,JDBC3.0提出了RowSet接口,旨在定义断开连接的数据集以及提供类似ADO的编程接口来操作数据库。从JDK5.0开始,RowSet得到全面强化,javax.sql.rowset包中提供了若干RowSet子接口,并都提供了标准实现。

下面是RowSet的五个子接口:
JdbcRowSet 保持连接的RowSet,它和一个具有ResultSet.TYPE_SCROLL_INSENSITIVE和ResultSet.CONCUR_UPDATABLE的ResultSet功能相当。
CachedRowSet 断开连接的RowSet,以缓存的方式实现离线的数据集操作。
WebRowSet 可与XML互相转换的RowSet,继承自CachedRowSet。有点类似ORM的意思,不同的是它为XML和Relation Data之间提供映射。
FilteredRowSet 可通过过滤条件得到数据集的子集的RowSet,继承自WebRowSet。Predicate是过滤器接口。
JoinRowSet 对数据集进行Join连接查询得到的RowSet,继承自WebRowSet。 它和SQL语句的join操作效果类似。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值