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