05-JDBC学习手册:JDBC2.0 新特性之批量处理数据

本文详细介绍了在SQL中如何操作不同类型的结果集,包括可滚动结果集的定位与导航、可更新结果集的增删改操作及批量更新的实现方式。

1 Scrollability 结果集可滚动

滚动:可双向支持绝对与相对滚动,对结果集可进行多次迭代。

Con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  • TYPE_FORWARD_ONLY:

    该常量指示指针只能向前移动的 ResultSet 对象的类型。

  • TYPE_SCROLL_SENSITIVE:

    该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。

  • CONCUR_UPDATABLE:

    该常量指示可以更新的 ResultSet 对象的并发模式。

绝对定位

boolean absolute(int row)将游标移动到指定位置。

相对定位

void afterLast()将游标向后移动一位。
void beforeFirst()。将游标向前移动一位。
boolean first()将游标移动到结果集最前
boolean last()将游标移动到结果集末尾。

2 Updatability 结果集可更新

更新

//定位到要更新的记录
rs.absolute(int row);
//更新该行记录的信息
rs.updateString(“name”,”Tony”);
rs.updateInt(1,”122323”);
//更新底层数据
rs.updateRow();

插入

//把指针移动到可插入的行
rs.moveToInsertRow();
// 更新该行记录的信息
rs.updateInt(1,113);
rs.updateString(2, "test2");
rs.updateDate(3,Date.valueOf("1999-9-9"));
rs.updateFloat(4,80.5f);
// 插入数据
rs.insertRow();
rs.moveToCurrentRow();

删除

// 定位到要删除的记录
Rs.absolute( int row); 
// 删除该行记录
rs.deleteRow();

注:只有在必要的时候(如桌面应用)才用结果集更新数据库,因为使用结果集更新数据库效率低下。可更新结果集还要看数据库驱动程序是否支持,如 Oracle就支持 MySql 不支持。并且只能针对一张表做结果集更新。而且不能有 join 操作。必须有主健,必须把非空没有默认值的字段查出。处理可更新结果集时不能用 select *来执行查询语句,必须指出具体要查询的字段。

3 Batch updates 可批量更新

将一组对数据库的更新操作发送到数据库统一执行(数据库支持并发执行操作),以提高效率。主要是通过减少数据(Sql 语句或参数)在网络上传输的次数来节省时间。

(1)对于 Statement 的批量更新处理

stm.addBatch(Sql);
stm.addBatch(Sql);
int[] results=stm.executeBatch();

(2)对于 PreparedStatement 的批量跟新处理

pstm.setInt(1,11);pstm.setString(2,”haha”);……..
pstm.addBatch()
pstm.setInt(1,12);pstm.setString(2,”gaga”);……..
pstm.addBatch()
int[] results=stm.executeBatch();

注:

int[] 中每一个数表示该 Sql 语句影响到的记录条数。
PreparedStatement 的更新操作比 Statement 的更新操作多了一个设置参数的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值