我正在做一个声明:
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结果集类型创建的语句,查询必须选择一个表,不能使用函数,并且必须从该表中选择所有主键。
任何想法为什么会发生这种情况?
答案 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);