我做的语句:结果集不可更新
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创建的语句中获得comd,查询必须选择一个表,不能使用函数并且必须从该表中选择所有主键。
任何想法为什么会发生这种情况?
的可能重复:https://stackoverflow.com/questions/22271475/jdbc-deleting-an-entry-primary-keys-concur-updatable-issues – tima
为什么你使用'String.format'为设置参数值?这是不安全的,并向您打开SQL注入。 –
异常消息非常明确,您选择的表没有主键(或者您未选择所有主键列)。请在您的问题中包含所有相关的DDL。 –