Oracle 数据库,对只读结果集的无效操作: updateString

代码 conn = DriverManager.getConnection(url, username, password); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = "select * from users"; rs = stmt.executeQuery(sql); // System.out.println(rs.getConcurrency()); rs.next(); // 更新一行 rs.updateString("name", "admin"); rs.updateRow();

在JDBC使用可更新的结果集使用时,出现以下问题

Oracle 数据库,对只读结果集的无效操作: updateString_第1张图片

 

后来查阅很多资料和帖子。发现主要有2个问题引起的

1、oracle class12.jar这个驱动包不支持可读写结果集。换成最新的JDBC驱动即可

2、oracle数据库的特性

 设定可更新ResultSet.CONCUR_UPDATABLE,如果是Oracle数据库,在写查询语句时千万不要写select * from table,这样就不能更新结果集(rs.updateString),要把你要查询的字段一一写出来。

  用select * 会导致该ResultSet强制readonly,但是同样的效果语句如果写成select 字段字段1,字段2,字段3...就会正常完成。

 

按照2条的问题,我修改sql语句,改为

 

select id, name,password from users

 

问题得与解决。

你可能感兴趣的:(Oracle 数据库,对只读结果集的无效操作: updateString)