Junior — Middle
Quelle est la différence entre les classes Statement et PreparedStatement en JDBC en termes d'utilisation et de performance?
sobes.tech IA
Réponse de l'IA
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, если запросы повторяются с разными параметрами или требуется безопасность.