我想知道这个删除语句是否实际删除了某些内容.下面的代码总是执行else.是否删除了某些内容.这样做的正确方法是什么?
public Deleter(String pname, String pword) {
try {
PreparedStatement createPlayer = conn.prepareStatement("DELETE FROM players WHERE P_Name='"+ pname +"' AND P_Word='" + pword + "'");
createPlayer.execute();
if(createPlayer.execute()==true){
JOptionPane.showMessageDialog(null, "Player successfully deleted!");
}else{
JOptionPane.showMessageDialog(null, "Player does not exist!", "notdeleted", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
您实际上执行了两次删除语句,因为您调用了.execute()
两次.在大多数情况下,如果您几乎立即再次运行,则您不太可能拥有可以被语句删除的数据.
相反,使用返回修改的行数的executeUpdate()
方法:
int rowsAffected = createPlayer.executeUpdate();
if(rowsAffected > 0) {
JOptionPane.showMessageDialog(null, "Player successfully deleted!");
}
else{
JOptionPane.showMessageDialog(null, "Player does not exist!", "notdeleted", JOptionPane.ERROR_MESSAGE);
}
Run Code Online (Sandbox Code Playgroud)