Back to questions
Junior
222
В чем разница между Statement и PreparedStatement в Java?
Answer from AI
sobes.tech AI
Statement и PreparedStatement — это интерфейсы JDBC для выполнения SQL-запросов, но они отличаются по способу работы и применению.
- Statement используется для выполнения простых SQL-запросов без параметров. Запросы передаются в виде строк, которые компилируются и выполняются каждый раз заново.
- PreparedStatement позволяет создавать параметризованные запросы с плейсхолдерами (например,
?), которые компилируются один раз и могут выполняться многократно с разными параметрами.
Преимущества PreparedStatement:
- Безопасность: предотвращает SQL-инъекции, так как параметры передаются отдельно и не влияют на структуру запроса.
- Производительность: запрос компилируется один раз, что ускоряет повторное выполнение.
Пример использования PreparedStatement:
String sql = "SELECT * FROM users WHERE email = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "user@example.com");
ResultSet rs = ps.executeQuery();
В то время как Statement:
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE email = 'user@example.com'");
Использование PreparedStatement рекомендуется для динамических запросов с параметрами и для повышения безопасности и производительности.