Sobes.tech
Junior — Middle

Quelle est la différence entre les types de requêtes SQL Statement et PreparedStatement dans le contexte de Java, et quels sont leurs avantages et inconvénients?

sobes.tech IA

Réponse de l'IA

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 предпочтительнее для динамических запросов с параметрами и для повышения безопасности и производительности.