4

我能够很好地读取查询的每一行,但我也想在读取字段时更新它们。

当我添加两个 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 节。

将主键添加到我的数据库不会有什么坏处,这可能是正确的方法。

4

1 回答 1

0

我在我的数据库中添加了主键,它工作得很好。

谢谢!

于 2013-04-15T02:20:02.830 回答