我可以将包含数据的String与mysql查询连接起来吗?

时间:2015-01-15 08:56:54

标签: java mysql jdbc

我的代码部分为:

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与查询的连接来做事情吗?有人可以提供一些提示吗? `

2 个答案:

答案 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 + "'");