Spec-Zone .ru
спецификации, руководства, описания, API
След: JDBC (ТМ) Доступ к базе данных
Урок: Основы JDBC
Обработка SQL-операторов с JDBC
Домашняя страница > JDBC (ТМ) Доступ к базе данных > Основы JDBC

Обработка SQL-операторов с JDBC

Вообще, чтобы обработать любой SQL-оператор с JDBC, Вы следуете за этими шагами:

  1. Установление соединения.
  2. Создайте оператор.
  3. Выполните запрос.
  4. Обработайте ResultSet объект.
  5. Закройте соединение.

Эта страница использует следующий метод, CoffeeTables.viewTable, от учебной выборки, чтобы демонстрировать эти шаги. Этот метод выводит содержание таблицы COFFEES. Этот метод будет обсужден более подробно позже в этом учебном руководстве:

public static void viewTable(Connection con, String dbName)
    throws SQLException {

    Statement stmt = null;
    String query = "select COF_NAME, SUP_ID, PRICE, " +
                   "SALES, TOTAL " +
                   "from " + dbName + ".COFFEES";
    try {
        stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String coffeeName = rs.getString("COF_NAME");
            int supplierID = rs.getInt("SUP_ID");
            float price = rs.getFloat("PRICE");
            int sales = rs.getInt("SALES");
            int total = rs.getInt("TOTAL");
            System.out.println(coffeeName + "\t" + supplierID +
                               "\t" + price + "\t" + sales +
                               "\t" + total);
        }
    } catch (SQLException e ) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) { stmt.close(); }
    }
}

Установление Соединений

Во-первых, установите соединение с источником данных, который Вы хотите использовать. Источник данных может быть DBMS, файловой системой наследства, или некоторым другим источником данных с соответствующим драйвером JDBC. Это соединение представляется a Connection объект. См. Установление Соединения для получения дополнительной информации.

Создание Операторов

A Statement интерфейс, который представляет SQL-оператор. Вы выполняетесь Statement объекты, и они генерируют ResultSet объекты, который является таблицей данных, представляющих набор результатов базы данных. Вы нуждаетесь в a Connection объект создать a Statement объект.

Например, CoffeesTables.viewTable создает a Statement объект со следующим кодом:

stmt = con.createStatement();

Есть три различных видов операторов:

Выполнение Запросов

Чтобы выполнить запрос, вызовите execute метод от Statement такой как следующее:

Например, CoffeeTables.viewTable выполняемый a Statement объект со следующим кодом:

ResultSet rs = stmt.executeQuery(query);

См. Получение и Изменение Значений от Наборов результатов для получения дополнительной информации.

Обработка Объектов ResultSet

Вы получаете доступ к данным в a ResultSet объект через курсор. Отметьте, что этот курсор не является курсором базы данных. Этот курсор является указателем, который указывает на одну строку данных в ResultSet объект. Первоначально, курсор располагается перед первой строкой. Вы вызываете различные методы, определенные в ResultSet возразите, чтобы переместить курсор.

Например, CoffeesTables.viewTable неоднократно вызывает метод ResultSet.next перемещать курсор вперед одной строкой. Каждый раз это вызывает next, метод выводит данные в строке, где курсор в настоящий момент располагается:

try {
    stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        String coffeeName = rs.getString("COF_NAME");
        int supplierID = rs.getInt("SUP_ID");
        float price = rs.getFloat("PRICE");
        int sales = rs.getInt("SALES");
        int total = rs.getInt("TOTAL");
        System.out.println(coffeeName + "\t" + supplierID +
                           "\t" + price + "\t" + sales +
                           "\t" + total);
    }
}
// ...

См. Получение и Изменение Значений от Наборов результатов для получения дополнительной информации.

Закрытие Соединений

Когда Вы заканчиваетесь, используя a Statement, вызовите метод Statement.close чтобы сразу высвободить средства, это использует. Когда Вы вызываете этот метод, ResultSet объекты закрываются.

Например, метод CoffeesTables.viewTable гарантирует что Statement объект закрывается в конце метода, независимо от любого SQLException брошенные объекты, обертывая это в a finally блок:

} finally {
    if (stmt != null) { stmt.close(); }
}

JDBC бросает SQLException когда это встречается с ошибкой во время взаимодействия с источником данных. См. Исключения SQL Обработки для получения дополнительной информации.

В JDBC 4.1, который доступен в Java выпуск 7 SE и позже, можно использовать оператор попытки с ресурсами, чтобы автоматически закрыться Connection, Statement, и ResultSet объекты, независимо от ли SQLException был брошен. Автоматический оператор ресурса состоит из a try оператор и один или более объявленные ресурсы. Например, можно изменить CoffeesTables.viewTable так, чтобы Statement возразите закрывается автоматически, следующим образом:

public static void viewTable(Connection con) throws SQLException {

    String query = "select COF_NAME, SUP_ID, PRICE, " +
                   "SALES, TOTAL " +
                   "from COFFEES";

    try (Statement stmt = con.createStatement()) {

        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            String coffeeName = rs.getString("COF_NAME");
            int supplierID = rs.getInt("SUP_ID");
            float price = rs.getFloat("PRICE");
            int sales = rs.getInt("SALES");
            int total = rs.getInt("TOTAL");
            System.out.println(coffeeName + ", " + supplierID +
                               ", " + price + ", " + sales +
                               ", " + total);
        }
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    }
}

Следующий оператор try- оператор с ресурсами, который объявляет один ресурс, stmt, это будет автоматически закрыто когда try блок завершается:

try (Statement stmt = con.createStatement()) {
    // ...
}

См. try- Оператор с ресурсами в Существенных Классах запаздывают для получения дополнительной информации.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Начинание
Следующая страница: Установление Соединения