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