Назад к вопросам
Middle
70
questionbank

Какие существуют виды Statement в JDBC?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В JDBC существуют три основных вида Statement:

  1. Statement:

    • Подходит для выполнения статических SQL-запросов без параметров.
    • Не кэширует план выполнения запроса, что может снижать производительность при повторном выполнении.
    • Уязвим к SQL-инъекциям, так как значения вставляются непосредственно в строку запроса.
  2. PreparedStatement:

    • Предназначен для выполнения параметризованных SQL-запросов.
    • Параметры устанавливаются с помощью методов setXXX().
    • Кэширует план выполнения запроса, что повышает производительность при многократных вызовах с разными параметрами.
    • Безопасен от SQL-инъекций, так как параметры автоматически экранируются.
  3. CallableStatement:

    • Используется для вызова хранимых процедур и функций в базе данных.
    • Поддерживает входные, выходные и входные/выходные параметры.
    • Параметры устанавливаются и регистрируются с помощью методов setXXX() и registerOutParameter().

Пример использования PreparedStatement:

// Подключение к базе данных (предполагается, что соединение "conn" установлено)
String sql = "SELECT name, age FROM users WHERE id = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
    pstmt.setInt(1, 101); // Установка параметра для WHERE id = ?
    try (ResultSet rs = pstmt.executeQuery()) {
        while (rs.next()) {
            System.out.println("Name: " + rs.getString("name") + ", Age: " + rs.getInt("age"));
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}