如何知道在java中执行sql语句?

Wer*_*eta 2 java mysql

我想知道这个删除语句是否实际删除了某些内容.下面的代码总是执行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)

mat*_*t b 9

您实际上执行了两次删除语句,因为您调用了.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)


Geo*_*Geo 6

使用executeUpdate.它返回一个int参数,告诉您受影响的行数.另外,请注意,在代码中执行语句两次.