В JDBC существуют три основных вида Statement:
-
Statement:
- Подходит для выполнения статических SQL-запросов без параметров.
- Не кэширует план выполнения запроса, что может снижать производительность при повторном выполнении.
- Уязвим к SQL-инъекциям, так как значения вставляются непосредственно в строку запроса.
-
PreparedStatement:
- Предназначен для выполнения параметризованных SQL-запросов.
- Параметры устанавливаются с помощью методов
setXXX().
- Кэширует план выполнения запроса, что повышает производительность при многократных вызовах с разными параметрами.
- Безопасен от SQL-инъекций, так как параметры автоматически экранируются.
-
CallableStatement:
- Используется для вызова хранимых процедур и функций в базе данных.
- Поддерживает входные, выходные и входные/выходные параметры.
- Параметры устанавливаются и регистрируются с помощью методов
setXXX() и registerOutParameter().
Пример использования PreparedStatement:
java