我能够很好地读取查询的每一行,但我也想在读取字段时更新它们。
当我添加两个 rs.update 行时,以下代码会中断。
Connection con = DriverManager.getConnection(url, user, pass);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE)
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
amount = rs.getInt("amount");
username = rs.getString("username");
rs.updateString("processed", "true");
rs.updateRow();
}
看来我已经找到了答案:
[严重] com.mysql.jdbc.NotUpdatable:结果集不可更新(引用的表没有主键)。此结果集必须来自使用 ResultSet.CONCUR_UPDATABLE 结果集类型创建的语句,查询必须仅选择一个表,不能使用函数,必须从该表中选择所有主键。有关更多详细信息,请参阅 JDBC 2.1 API 规范,第 5.6 节。
将主键添加到我的数据库不会有什么坏处,这可能是正确的方法。