可保持的ResultSet

可保持的ResultSet正常情况下如果使用Statement执行完一个查询,又去执行另一个查询时这时候第一个查询的结果集就会被关闭,也就是说,所有的Statement的查询对应的结果集是一个,如果调用Connection的commit()方法也会关闭结果集。可保持性就是指当ResultSet的结果被提交时,是被关闭还是不被关闭。JDBC2.0和1.0提供的都是提交后ResultSet就会被关闭。不过在JDBC3.0中,我们可以设置的对象的创ResultSet是否关闭。要完成这样的ResultSet建,要使用的Statement的创建要具有三个参数,这个Statement的创建方式也就是,我所说的Statement的第三种创建方式。如下: Statement st=createStatement(int resultsetscrollable,int resultsetupdateable,int resultsetSetHoldability)ResultSet rs = st.excuteQuery(sqlStr);前两个参数和两个参数的createStatement方法中的参数是完全相同的,这里只介绍第三个参数:       resultSetHoldability表示在结果集提交后结果集是否打开,取值有两个:       ResultSet.HOLD_CURSORS_OVER_COMMIT:表示修改提交时,不关闭数据库。     ResultSet.CLOSE_CURSORS_AT_COMMIT:表示修改提交时ResultSet关闭。不过这种功能只是在JDBC3.0的驱动下才能成立。

但是如果采用数据持久层和业务逻辑分开来来,在DAO层生成sta和rs,那我们现在要考虑的问题是什么时候关闭sta rs 和con的问题 。DAO往Bean传递的是rs 可以在使用完成之后关闭 CON可以在Bean最后的finally{}中进行关闭  。那么sta在什么时候关闭?

正常的关闭顺序如下:

 if (rs != null)    rs.close(); 

  if (sta != null)    sta.close();  

 if (con != null)    con.close();

疑问:是否设置了 ResultSet.HOLD_CURSORS_OVER_COMMIT后执行rs.close()后,还可以访问rs中的方法和数据????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值