您的位置:首页 > 其它

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()

涵数将会使游标向后移动,使的数据更新失败.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: