Java 从其中删除ID=';用户插入的文本';?

Java 从其中删除ID=';用户插入的文本';?,java,mysql,sql,Java,Mysql,Sql,我想删除MySQL行,其中id=user将文本插入Java中的jTextField。我知道我需要使用类似于txtGebruikersID.getText()的东西但不确定如何正确组合它们,以便当有人在JTextField(txtGebruikersID)中插入25这样的值时,25会进入25所在的位置: query = "delete from gebruiker where gebruiker_ID = 25"; 我在QueryManager.java中使用的代码: public void r

我想删除MySQL行,其中id=user将文本插入Java中的jTextField。我知道我需要使用类似于
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);
    }

将函数编辑为如下内容:

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

然而,有更好的方法来做到这一点。事先准备好的声明确实更好。如果确实使用此方法,请确保检查用户的输入。

将函数编辑为如下内容:

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

然而,有更好的方法来做到这一点。事先准备好的声明确实更好。如果确实使用此方法,请确保检查用户的输入。

您应该这样做。这是使用sqls时更可取的方法

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

你应该这样做。这是使用sqls时更可取的方法

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


我真的希望输入经过消毒。。。这是一个“管理”类型的工具。使用绑定变量的
PreparedStatement
——这是一个多年的问题,也就是说,在计算术语中,这是一个在史前时代就已经解决的问题。天哪,博比尖叫道Tables@RobertH参考XKCD?;)@F4LLCON我曾经有过同样的态度,然后我开始重用我的代码,并通过多个项目传播有缺陷的代码。我花了更多的时间来解决我所造成的问题,而不是一开始就正确地处理这些问题。我真的希望输入得到净化。。。这是一个“管理”类型的工具。使用绑定变量的
PreparedStatement
——这是一个多年的问题,也就是说,在计算术语中,这是一个在史前时代就已经解决的问题。天哪,博比尖叫道Tables@RobertH参考XKCD?;)@F4LLCON我曾经有过同样的态度,然后我开始重用我的代码,并通过多个项目传播有缺陷的代码。我花了更多的时间来解决我造成的问题,而不是一开始就花在正确处理上的时间。谢谢你抽出时间。将在4分钟内接受真棒,这成功了。谢谢你抽出时间。将在4分钟内接受测试,但是Floris Velleman的代码有什么问题吗?根据我们上面的评论,下面的代码可以接受SQL注入。@F4LLCON:有效的东西不一定意味着它是最好的解决方案。看看其他人指出的缺陷,我相信您会意识到使用
PreparedStatement
而不是您当前实现的方式的重要性:)@F4LLCON您一定应该看看
SQL注入
。我在回答中添加了这个链接。我不知道怎么回答这个问题。但是黑客是黑客,他们总是知道如何破坏在线安全,关于你的管理员,我不能发表任何评论。谢谢,但是Floris Velleman的代码有什么问题吗?根据我们上面的评论,下面的代码可以接受SQL注入。@F4LLCON:有效的东西并不意味着它是最好的解决方案。看看其他人指出的缺陷,我相信您会意识到使用
PreparedStatement
而不是您当前实现的方式的重要性:)@F4LLCON您一定应该看看
SQL注入
。我在回答中添加了这个链接。我不知道怎么回答这个问题。但是黑客是黑客,他们总是知道如何破坏网络安全,关于你的管理员,我不能发表任何评论。