我的代码部分为:
String t = (tname2.getText());
String h = (value2.getText());
PreparedStatement ps ;
if(h.length()>2)
{
ps = con.prepareStatement("DELETE FROM "+t+" where empname = "+ h);
//ps.setString(2,h);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "Record deleted !", "Confirmation", JOptionPane.INFORMATION_MESSAGE);
}
现在,行ps = con.prepareStatement("DELETE FROM "+t+" where empname = "+ h);
无效。它的另一种方式是使用“?”。和"Delete * from "+ t +" where empname =?";
一样
然后设置empname的值。我想知道,如果有一种方法可以使用我的empname与查询的连接来做事情吗?有人可以提供一些提示吗? `
答案 0 :(得分:5)
将PreparedStatement与参数化查询一起使用并设置值。
这种使用也会阻止SQL注入。
因为将值连接到查询中易受SQL注入的影响。
例如。
ps = con.prepareStatement("DELETE FROM "+t+" where empname = ?");
psmt.setString(1, h);
答案 1 :(得分:1)
试试这个:
ps = con.prepareStatement("DELETE FROM "+t+" where empname = '"+ h + "'");