今日总结:JDBC--ResultSet中的滚动和更新
对于preparedstatement 的格式,如下:
PreparedStatement pstmt = conn.prepareStatement(sql, ResultType,ResultSetConcurrency);
ResultType
ResultSet用来定位行的方法有,next(), last(), absolute(), previous(), afterLast()等等。
支持absolute(), previous(), afterLast()等方法的结果集,称为可滚动结果集。
ResultSetType支持三种取值,
- ResultSet.TYPE_FORWARD_ONLY, 只能向前移动(JDK1.4以前的默认值)
- ResultSet.TYPE_SCROLL_INSENSITIVE, 可滚动,但是底层数据的改变不会影响结果集
- ResultSet.TYPE_SCROLL_SENSITIVE, 可滚动,底层数据的改变会影响结果集
ResultSet.type2
resultSetConcurrency有两种取值
- ResultSet.CONCUR_READ_ONLY,只读的并发模式(默认)
- ResultSet.CONCUR_UPDATABLE,可更新的并发模式
另外,可更新的结果集还需要满足两个条件,
- 所有数据都来自一个表;
- 选出的数据集必须包含主键列
要通过结果集更新数据库,只需要调用ResultSet对象的updateXxx(index, value)方法修改和updateRow()方法提交即可
如
for (int i = rowCount; i > 0 ; i--) { rs.absolute(i);
System.out.println("打印第 "+i+" 行: "+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)); //修改当前行,第2列和第3列的值
rs.updateString(2, "学生名"+i); rs.updateString(3, "学生名"+(i+1));
//提交修改 rs.updateRow();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!