结果集不可更新

时间:2017-08-14 03:55:28

标签: java mysql jdbc

我正在做一个声明:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
try(ResultSet results = statement.executeQuery(String.format("SELECT id, id2 FROM SETTINGS WHERE instance3 = %s, instance.getId())));

但我明白了:

  

com.mysql.cj.jdbc.exceptions.NotUpdatable:结果集不可更新(引用的表没有主键)。此结果集必须来自使用ResultSet.CONCUR_UPDATABLE结果集类型创建的语句,查询必须选择一个表,不能使用函数,并且必须从该表中选择所有主键。

任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:-1)

您正在创建一个允许结果集可更新的语句。默认的ResultSet对象不可更新,并且只有一个向前移动的游标。因此,您需要使用以下代码片段,其中con是有效的Connection对象。它说明了如何创建一个可滚动且对其他人更新不敏感的结果集,并且可以更新。

来自:http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html

您可以从上面的源文档链接中更多地参考。

PreparedStatement prepStmt= conn.prepareStatement(query,
    ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);