我的Java代码生成一个查询 - >从'emp'删除,但我需要它作为 - >从emp中删除。请帮我

时间:2011-04-20 09:13:40

标签: java jdbc

我的Java代码生成一个查询 - >从' emp'删除,但我需要它作为 - >从emp中删除。请帮帮我

void deleteData(Map records) throws SQLException { 
   String delQuery = "delete from ? where empid = ?" 
   String tbname = String records.get(tabName); 
   String empid = String records.get(empid); 
   PreparedStatement data = getPreparedStatement(DelQuery); 
   data.setString(1,tbname); 
   data.setString(2,empid); 
   System.out.println("Query is ---->"+data.toString()); 
   ResultSet rst = data.executeQuery();
 }

当我看到控制台出错时,显示:

Query is ----> DELETE FROM 'emp' WHERE empid = '21'

Could not execute sql command - Original message: null

2 个答案:

答案 0 :(得分:3)

不幸的是,您无法将表名设置为参数。您必须将其作为SQL的一部分进行编码。

delQuery = "DELETE FROM " + tbname + " WHERE empid = ?"

显然,关于确保您的表名字段被清理的常见警告适用。

答案 1 :(得分:0)

您不能将表名与PreparedStatement绑定,只能绑定列值。你可以这样做:

...
String tbname = String records.get(tabName);    
String delQuery = "delete from " + tbname + " where empid = ?";
...

这不会使它更容易受到注入,因为tableName不应该来自用户。