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 的更新操作多了一个设置参数的过程。