Skip to content

更新ResultSet结果集

创建Statement对象时,设置Statement属性RresultSetConcurrency为ResultSet.CONCUR_UPDATABLE,并且数据库URL连接串属性return_rowid设置为TRUE时,Statement对象执行SQL语句返回的ResultSet结果集才能被更新。当ResultSet对象为可更新结果集时,将光标移至插入位置,可调用ResultSet类对应的update方法修改结果集中行数据,并通过updateRow方法将更改数据更新到数据库中。

示例: 通过修改结果集中数据值更改数据库中对应记录

//创建Statement对象并设置结果集属性为可更新
Statement stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//执行SQL语句
ResultSet rs = stm.executeQuery(sql);
//结果集遍历
while(rs.next())
{
  //更新结果集中指定列数据
    rs.updateLong(1, 5);
  //更新结果集中指定列数据
    rs.updateFloat(3, 12.3f);
  //结果集变更回写入数据库
    rs.updateRow();
}

通过调用ResultSet类的next()、previous()、absolute(int)方法移动光标位置,将光标位置移动到指定数据行,通过ResultSet类对应的get方法获取行数据。

说明:

如使用结果集更新数据库数据,需在建立数据库连接时,设置连接属性return_rowid为TRUE,且在生成执行SQL语句对象时,并发属性指定为ResultSet.CONCUR_UPDATABLE。