简体   繁体   English

从哪里删除ID ='用户插入的文本'?

[英]DELETE FROM where ID = 'user inserted text'?

I want to delete MySQL rows where id = user inserted text into jTextField in Java. 我想删除id =用户在Java中的jTextField中插入文本的MySQL行。 I know I need to use something like txtGebruikersID.getText(); 我知道我需要使用txtGebruikersID.getText();类的东西txtGebruikersID.getText(); but not sure how to combine them correctly so that when someone inserts like 25 in JTextField (txtGebruikersID) that value of 25 goes where the 25 is in: 但不确定如何正确组合它们,以便当有人在JTextField(txtGebruikersID)中插入25之类的值时,25的值将到达25所在的位置:

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

Code I use in QueryManager.java: 我在QueryManager.java中使用的代码:

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

JTextField is called txtGebruikersID JTextField称为txtGebruikersID

And code I use in userPanel.java: 我在userPanel.java中使用的代码:

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

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

You should do something like this. 你应该做这样的事情。 This is more preferred way on working with sqls 这是使用sqls的首选方法

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

What is SQL Injection" 什么是SQL注入”

Edit the function to something like this: 将函数编辑为如下所示:

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

Assuming you have a panel, 假设您有一个小组,

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

If the user puts 12 into the textfield the resulting query will be: 如果用户在文本字段中输入12,则结果查询将为:

delete from gebruiker where gebruiker_ID = 12

Nevertheless there are better ways to do this. 但是,有更好的方法可以做到这一点。 Prepared statements are indeed better. 准备好的语句确实更好。 If you do use this method make sure to check the input from the user. 如果确实使用此方法,请确保检查用户的输入。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM