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

Kir*_*han 1 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);
     }
Run Code Online (Sandbox Code Playgroud)

现在,该线路ps = con.prepareStatement("DELETE FROM "+t+" where empname = "+ h);无效.它的另一种方式是使用"?".如同"Delete * from "+ t +" where empname =?"; 然后设置empname的值.我想知道,如果有一种方法可以使用我的empname与查询的连接来做事情吗?有人可以提供一些提示吗?`

Ye *_*Win 5

将PreparedStatement与参数化查询一起使用并设置值.
这种使用也会阻止SQL注入.
因为将值连接到查询中易受SQL注入攻击.

例如.

ps = con.prepareStatement("DELETE FROM "+t+" where empname = ?");
psmt.setString(1, h);
Run Code Online (Sandbox Code Playgroud)