Java 从其中删除ID=';用户插入的文本';?
我想删除MySQL行,其中id=user将文本插入Java中的jTextField。我知道我需要使用类似于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
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注入
。我在回答中添加了这个链接。我不知道怎么回答这个问题。但是黑客是黑客,他们总是知道如何破坏网络安全,关于你的管理员,我不能发表任何评论。