Можете объяснить различия между типами Statement в JDBC и их особенности использования?
Ответ от нейросети
sobes.tech AI
В JDBC есть три основных типа Statement:
-
Statement — используется для выполнения простых SQL-запросов без параметров. Подходит для статичных запросов, но не безопасен для динамически формируемых с пользовательскими данными (риск SQL-инъекций).
-
PreparedStatement — предварительно компилирует SQL-запрос с параметрами (заменителями
?). Позволяет безопасно подставлять значения, предотвращая SQL-инъекции, и может быть эффективнее при повторном выполнении одного и того же запроса с разными параметрами. -
CallableStatement — предназначен для вызова хранимых процедур в базе данных. Позволяет передавать входные и выходные параметры.
Пример использования PreparedStatement:
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 10);
ResultSet rs = ps.executeQuery();
Вывод: для динамических запросов с параметрами лучше использовать PreparedStatement, для вызова процедур — CallableStatement, а для простых статичных запросов — Statement.