1

id = ユーザーがテキストを Java の jTextField に挿入した MySQL 行を削除したいと考えています。次のようなものを使用する必要があることはわかっていtxtGebruikersID.getText();ますが、それらを正しく組み合わせる方法がわからないため、誰かが JTextField (txtGebruikersID) に 25 のように挿入すると、25 の値が 25 の場所に移動します。

query = "delete from gebruiker where gebruiker_ID = 25";

QueryManager.java で使用するコード:

public void removeGebruiker() {
        String query;
        query = "delete from gebruiker where gebruiker_ID = 25";
        dbmanager.insertQuery(query);
    }

JTextField はtxtGebruikersIDと呼ばれます

そして、userPanel.java で使用するコード:

private void removeUserActionPerformed(java.awt.event.ActionEvent evt) {

        WinkelApplication.getInstance().getQueryManager().removeGebruiker();
        JOptionPane.showMessageDialog(null, "Gebruiker is verwijderd", "Gebruiker", JOptionPane.INFORMATION_MESSAGE);
    }
4

2 に答える 2

3

関数を次のように編集します。

public void removeGebruiker(String gebruiker_id) {
    //Some checks here perhaps
    String query;
    query = "delete from gebruiker where gebruiker_ID = " + gebruiker_id;
    dbmanager.insertQuery(query);
}

あなたがパネルを持っていると仮定すると、

WinkelApplication.getInstance().getQueryManager().removeGebruiker(TEXTFIELDNAMEHERE.getText());

ユーザーがテキストフィールドに12を入力すると、結果のクエリは次のようになります。

delete from gebruiker where gebruiker_ID = 12

それにもかかわらず、これを行うためのより良い方法があります。プリペアドステートメントは確かに優れています。この方法を使用する場合は、必ずユーザーからの入力を確認してください。

于 2013-01-04T18:39:46.380 に答える
3

あなたはこのようなことをすべきです。これは、SQLを操作するためのより好ましい方法です

query = "delete from gebruiker where gebruiker_ID = ?";
PreparedStatement st = con.prepareStatement(query); // con is active connection
st.setInt(1,Integer.parseInt(txtGebruikersID.getText()));

SQL インジェクションとは」

于 2013-01-04T18:44:19.570 に答える