Junior — Middle
Mi a különbség a Statement és PreparedStatement osztályok között JDBC-ben a használat és a teljesítmény szempontjából?
sobes.tech MI
Válasz az MI-től
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, если запросы повторяются с разными параметрами или требуется безопасность.