Найти тему
DEBAGanov

Java 96. Какая разница между Statement и PreparedStatement?

Statement и PreparedStatement - это два класса, которые используются для выполнения запросов к базе данных в Java. Основная разница между ними заключается в том, как они обрабатывают параметры запроса.

Statement используется для создания статического SQL-запроса без параметров. Такой запрос выполняется каждый раз при вызове метода execute() объекта Statement. Например:

Statement stmt = connection.createStatement();
String sql = "SELECT * FROM users WHERE name = 'John'";
ResultSet rs = stmt.executeQuery(sql);

PreparedStatement же позволяет создавать динамический SQL-запрос с параметрами. Этот запрос компилируется только один раз, а затем может быть многократно выполнен с разными значениями параметров. Параметры указываются в виде плейсхолдеров "?" в SQL-запросе. Например:

PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM users WHERE name = ?");
pstmt.setString(1, "John");
ResultSet rs = pstmt.executeQuery();

При использовании PreparedStatement значительно повышается производительность запросов, особенно если нужно выполнить множество запросов с одним и тем же шаблоном, но с разными значениями параметров. Кроме того, PreparedStatement защищает от SQL-инъекций, так как параметры автоматически экранируются при выполнении запроса.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov