【发布时间】:2021-08-06 18:33:43
【问题描述】:
我的这段代码在这里:
sql = "DELETE FROM assignments WHERE assign_mark = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, d1);
boolean rows = statement.execute();
if (rows == true) {
new ViewDatabase(user, name, pswrd);
System.out.println("ASSIGN - ASSIGN_MARK UPDATE SUCCESSFUL!");
frame.setVisible(false);
} else if (rows == false) {
JOptionPane.showMessageDialog(null, "Cannot find row!",
"ERROR", JOptionPane.ERROR_MESSAGE);
}
statement.close();
connection.close();
输入 d1 的值(对应于我数据库中现有数据的正确列)后,我得到“找不到行!”价值。但是,当我检查我的数据库时,列名中带有 d1 的行不见了。我不确定我在这里对概念有什么错误/误解。
【问题讨论】:
-
您在已经删除之后运行了代码?您还需要检查驱动程序为删除返回的内容。返回值可能并不像您认为的那样
-
你可能会更好:
int numColsAffected = statement.executeUpdate(); -
@g00se 不,我在删除代码之前运行了代码,但是之后当我检查我的数据库时,该行不再存在。出于某种奇怪的原因,您的第二个建议确实有效!我不知道发生了什么哈哈,但谢谢!
-
好的已经把它作为你接受的答案
-
如果您发现您认为没有意义的行为,请阅读documentation。
execute()返回的布尔值并不代表你认为的意思。