Назад к вопросам
Junior
96
questionbank

В чем разница между Statement и PreparedStatement в Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Пример использования Statement:

// Пример Statement
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");

Пример использования PreparedStatement:

// Пример PreparedStatement
String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "admin");
ResultSet rs = pstmt.executeQuery();

Основные отличия:

Характеристика Statement PreparedStatement
Параметры Не поддерживает Поддерживает (использует ?)
Производительность Ниже при многократном выполнении Выше при многократном выполнении
Защита от SQL-инъекций Не обеспечивает Обеспечивает (автоматическое экранирование)
Предварительная компиляция Нет Да (сохраняет план выполнения)