JDBC ResultSet数据更新
2010-03-22 16:59
525 查看
JDBC 采用ResultSet方式更新数据库的时候,有机几点需要注意.首先,就是采用的select语句,当使用*作为搜索返回结果集的
时候,JDBC将默认的将ResultSet强制设置为ReadOnly模式.
如果采用ResultSet的更新模式,需要将statement设置为ResultSet.CONCUR_UPDATABLE.
Statement 的参数:
默认设置:statement 为Type_FORWARD_ONLY并带有并发CONCUR_READ_ONLY.的并发级别.
TYPE_FORWARD_ONLY,表示指针只能向前移动
TYPE_SCOLL_INSENSITIVE 可滚动但通常不受其它的更改影响.
TYPE_SCOLL_SENSITIVE 可滚动,并且通常受其它的更改影响.
当使用ResultSet的update的时候,一定需要将游标定位到当前行,否则程序不会抛出异常,但是数据会更新错误
conn.setAutoCommit(false);
pstm = conn
.prepareStatement(getTotalNum,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
pstm.setString(1, "total");
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
Integer total = Integer.valueOf(rs.getString("value"));
total -= 2;
System.out.println(total);
rs.updateInt("value", total);
rs.updateRow();
} //------------------------ 1
conn.commit();
上述片段能够正常更新数据,但是如果当rs.updateRow()防在1之后,该数据将不能正常的更新,原因在于当使用rs.next()
涵数将会使游标向后移动,使的数据更新失败.
时候,JDBC将默认的将ResultSet强制设置为ReadOnly模式.
如果采用ResultSet的更新模式,需要将statement设置为ResultSet.CONCUR_UPDATABLE.
Statement 的参数:
默认设置:statement 为Type_FORWARD_ONLY并带有并发CONCUR_READ_ONLY.的并发级别.
TYPE_FORWARD_ONLY,表示指针只能向前移动
TYPE_SCOLL_INSENSITIVE 可滚动但通常不受其它的更改影响.
TYPE_SCOLL_SENSITIVE 可滚动,并且通常受其它的更改影响.
当使用ResultSet的update的时候,一定需要将游标定位到当前行,否则程序不会抛出异常,但是数据会更新错误
conn.setAutoCommit(false);
pstm = conn
.prepareStatement(getTotalNum,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
pstm.setString(1, "total");
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
Integer total = Integer.valueOf(rs.getString("value"));
total -= 2;
System.out.println(total);
rs.updateInt("value", total);
rs.updateRow();
} //------------------------ 1
conn.commit();
上述片段能够正常更新数据,但是如果当rs.updateRow()防在1之后,该数据将不能正常的更新,原因在于当使用rs.next()
涵数将会使游标向后移动,使的数据更新失败.
相关文章推荐
- 关于JDBC中的ResultSet的更新数据操作
- JDBC使用ResultSet卷动、更新数据
- JDBC--使用statement接口实现更新数据
- jdbc获取符合查询条件的记录数据---ResultSet
- JDBC ResultSet 读取大数据抛 java.lang.OutOfMemoryError: Java heap space,
- JDBC :通过 Statement 执行数据表的更新操作
- JavaEE JDBC 可滚动和可更新的结果集ResultSet
- 基于JDBC 的数据库返回数据Resultset 数据绑定到Javabean
- JDBC第三章知识点总结——JDBC高级特性1--结果集,批量更新,高级数据类型
- 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
- 使用ResultSet更新数据库
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之08.JDBC可更新的ResultSet及RowSet 推荐
- JDBC第三章知识点总结——JDBC高级特性1--结果集,批量更新,高级数据类型
- JDBC编程之数据更新
- 结合jQueryForm-3.09.js 、jdbc metadata、java reflection 统一更新数据实现方案
- JDBC用ResultSet访问大量数据时会遇到的问题
- [疯狂Java]JDBC:可滚动/可更新的ResultSet
- JDBC编程之数据更新
- 使用JDBC读取本地的Excel文件并批量更新数据
- Java - 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?