Ответ
Название PreparedStatement отражает его ключевую особенность: SQL-запрос подготавливается (prepared) заранее, до выполнения с конкретными данными.
Принцип работы:
- Запрос с параметрами-заполнителями (
?) отправляется в СУБД. - СУБД компилирует и оптимизирует план выполнения запроса (парсинг, проверка синтаксиса, построение плана).
- Подготовленный запрос может выполняться многократно с разными значениями параметров.
Ключевые преимущества:
- Безопасность: Автоматическое экранирование параметров предотвращает SQL-инъекции.
- Производительность: Исключаются многократные компиляции одного и того же запроса.
- Читаемость: Четкое разделение структуры запроса и данных.
Пример использования в Java:
String sql = "SELECT name, email FROM users WHERE age > ? AND status = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setInt(1, 18); // Установка первого параметра
stmt.setString(2, "active"); // Установка второго параметра
ResultSet rs = stmt.executeQuery();