Back to questions
Junior — Middle
123
Чем отличаются классы Statement и PreparedStatement в JDBC с точки зрения использования и производительности?
Companies where asked
IBS
Answer from AI
sobes.tech AI
Statement:
- Используется для выполнения простых SQL-запросов без параметров.
- Запросы компилируются каждый раз при выполнении.
- Менее безопасен, так как подвержен SQL-инъекциям при динамическом формировании запросов.
PreparedStatement:
- Позволяет использовать параметризованные запросы с плейсхолдерами (например,
?). - Запрос компилируется один раз, а затем может выполняться многократно с разными параметрами.
- Повышает производительность при повторных вызовах одного и того же запроса.
- Более безопасен, так как параметры автоматически экранируются, снижая риск SQL-инъекций.
Пример:
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, userId);
ResultSet rs = ps.executeQuery();
Используйте PreparedStatement, если запросы повторяются с разными параметрами или требуется безопасность.