jdbc编程基础(六)——可滚动和可更新的结果集

一、可滚动结果集

一般使用ResultSet类中的next方法可以迭代遍历结果集中的所有行。我们通常会希望在结果集上前后移动。但是jdbc1并未提供previous方法,为了实现向后遍历,程序员不得不手动缓存结果集中的数据。使用jdbc2中的可滚动结果集,可以在结果集上前后移动并且可以跳转到结果集中的任何位置。
1、 可滚动结果集的创建:
Statement stmt = conn.createStatement(type, concurrency);
PreparedStatement pstmt = conn.preparedStatement(type, concurrency);
变量type来设置是否是可滚动的结果集,可以是以下几个ResultSet常量

TYPE_FORWARD_ONLY :结果集不能滚动

TYPE_SCROLL_INSENSITIVE:结果集可以滚动,但是对数据库变化不敏感,数据库查询
生成结果集后发生了变化,结果集不发生变化。

TYPE_SCROLL_SENSITIVE:结果集可以滚动,但是对数据库变化敏感。


二、 可更新结果集

更新结果集的内容,数据库将自动更新。
1、可更新结果集的创建
Statement stmt = conn.createStatement(type, concurrency);
PreparedStatement pstmt = conn.preparedStatement(type,
concurrency);
变量concurrency 设置是否可以更新,ResultSet类的concurrency的值:

CONCUR_READ_ONLY 结果集不能用于更新数据库

CONCUR_UPDATABLE 结果集可以更新数据库

update: rs.updateXxx(cloumnNameInResultSet, newValue)
rs.updateRow();
insert: rs.movetoInsertRow();
rs.updateString("title",title);
rs.updateDouble("price", price)l
rs.insertRow();
rs.moveToCurrentRow();
注意,无法控制在结果集或数据库中添加新数据的位置。
delete: rs.deleteRow();


实际上,数据库驱动程序可能无法支持对可滚动或可更新的请求,使用DatabaseMetaData类中的supportsResultSetType和supportsResultSetConcurrency方法,我们可以获知某个数据库究竟支持哪些结果集类型以及那些模式。一个复杂的查询的结果集可能是不可更新的结果集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值