мой код Java генерирует запрос -> удалить из 'emp', но мне нужно это как -> удалить из emp.пожалуйста, помогите мне - PullRequest
0 голосов
/ 20 апреля 2011

мои 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 ]

3 голосов
/ 20 апреля 2011

К сожалению, вы не можете установить имя таблицы в качестве параметра. Вы должны кодировать его как часть SQL.

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

Очевидно, что применяются обычные предостережения о том, что поля имен таблиц очищаются.

0 голосов
/ 20 апреля 2011

Вы не можете связывать имена таблиц с PreparedStatement, только значения столбцов.Вы можете сделать:

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

Это не сделает его более уязвимым для инъекций, так как tableName в любом случае не должно исходить от пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...