2016-01-20 2 views
1

IntelliJ IDEA 15.0.2IntelliJ IDEA решить инспектировать Сообщить

Вот мой фрагмент кода:

public int update(final String sql){ 
    int res = -1; 
    try (Connection con = this.connect(); 
     Statement pst = con.createStatement()){ 
     res=pst.executeUpdate(sql);//**if write pst.executeUpdate("") than no inspect message** 
    } catch (final SQLException e) { 
     this.logger.log(Level.SEVERE,e.getMessage()); 
    } 
    return res; 
} 

Вот сообщение инспектировать:

Позвони «Statement.executeUpdate() 'с непостоянным аргументом (короткое сообщение)

больше

Сообщает о вызовах java.sql.Statement.executeUpdate() или любом из его вариантов, которые берут динамически построенную строку в качестве выполняемого запроса. Построенные SQL-запросы являются общим источником нарушений безопасности.

Как его решить?

ответ

0

Проверки подсказывают, что лучше использовать подготовленную инструкцию. Поэтому вместо запроса, такого как UPDATE users SET name = "test" WHERE id ='1', вы получите запрос типа UPDATE users SET name = ? WHERE id = ? и передайте необходимые параметры перед его выполнением.

Так что в вашем случае:

PreparedStatement pst = con.prepareStatement(sql); // call pst.setInt(), pst.setString() etc. if needed pst.executeUpdate();

Другие подробности и примеры в этом учебнике: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Смежные вопросы