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