默认的ResultSet只能向下遍历(next());
可以将其设置成滚动的,既可以向上遍历(previous()),也可以定位到一个指定的物理行号(absolute(int index))
获得滚动结果集
//默认结果集,只能向下执行,并且只能迭代一次
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
//创建滚动结果集,多两个参数设置
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//con.createStatement(int ResultSet, int ResultSetConcurency)
con.createStatement(int ResultSet, int ResultSetConcurency)
- 第一个参数 ResultSet 结果集类型
- TYPE_FORWARD_ONLY 默认的,光标只能迁移
- TYPE_SCROLL_INSENSITIVE 可以滚动,不受底层数据的影响
- TYPE_SCROLL_SENSITIVE 可以滚动,受底层数据影响
- 第二个参数 ResultSetConcurency 并发类型
- CONCUR_READ_ONLY 指示不可更新的ResultSet对象的并发模式
- CONCUR_UPDATABLE 指示可以更新的ResultSet对象的并发模式
上述参数基本有三种搭配模式
- 默认的,不可滚动不可更改
- TYPE_FORWARD_ONLY
- CONCUR_READ_ONLY
- 可滚动不可更改
- TYPE_SCROLL_INSENSITIVE
- CONCUR_READ_ONLY
- 可滚动可更改
- TYPE_SCROLL_INSENSITIVE
- CONCUR_UPDATABLE
ResultSet可以更改数据库
//第一种通过 Statement执行sql语句执行
st.executeQuery(sql);
//第二种通过ResultSet执行,rs需要指向那一行
rs.updateString("","");//其他更改方式查看JDK文档
rs.updateRow();