Назад к вопросам
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-инъекций | Не обеспечивает | Обеспечивает (автоматическое экранирование) |
| Предварительная компиляция | Нет | Да (сохраняет план выполнения) |