Поделиться через


Изменение примера данных результирующего набора

Скачать драйвер JDBC

В этом примере приложения драйвера Microsoft JDBC для SQL Server демонстрируется извлечение большого набора данных из базы данных SQL Server. Затем с помощью методов объекта SQLServerResultSet вставляется, изменяется, и в конечном итоге удаляется строка данных из набора данных.

Файл кода для этого примера с именем UpdateResultSet.java находится в следующей папке:

\<installation directory>\sqljdbc_<version>\<language>\samples\resultsets

Требования

Чтобы запустить этот пример приложения, необходимо включить в параметр classpath путь к файлу mssql-jdbc.jar. Вам также потребуется доступ к образцу базы данных AdventureWorks2022. См. сведения о том, как настроить параметр classpath, в руководстве по использованию JDBC Driver.

Примечание

Драйвер Microsoft JDBC Driver для SQL Server включает файлы библиотек классов mssql-jdbc, которые используются в зависимости от выбранных параметров среды выполнения Java (JRE). Для получения дополнительных сведений о том, какой JAR-файл выбрать, см. статью Требования к системе для драйвера JDBC.

Пример

Пример кода устанавливает подключение к образцу базы данных AdventureWorks2022. Затем выполняется инструкция SQL с объектом SQLServerStatement, и возвращенные ею данные помещаются в обновляемый объект SQLServerResultSet.

Далее в примере кода используется метод moveToInsertRow для перемещения курсора результирующего набора в строку вставки. Затем он использует ряд методов updateString для вставки данных в новую строку. После этого вызывается метод insertRow для сохранения новой строки данных обратно в базу данных.

После вставки новой строчки данный пример кода использует инструкцию SQL для получения ранее вставленной строки. После используется комбинация методов updateString и updateRow для обновления строки данных и обратного ее сохранения в базе данных.

Наконец образец кода извлекает предварительно обновленную строку данных, затем удаляет ее из базы данных с помощью метода deleteRow.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class UpdateResultSet {

    public static void main(String[] args) {

        // Create a variable for the connection string.
        String connectionUrl = "jdbc:sqlserver://<server>:<port>;encrypt=true;databaseName=AdventureWorks;user=<user>;password=<password>";

        try (Connection con = DriverManager.getConnection(connectionUrl);
                Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);) {

            // Create and execute an SQL statement, retrieving an updateable result set.
            String SQL = "SELECT * FROM HumanResources.Department;";
            ResultSet rs = stmt.executeQuery(SQL);

            // Insert a row of data.
            rs.moveToInsertRow();
            rs.updateString("Name", "Accounting");
            rs.updateString("GroupName", "Executive General and Administration");
            rs.updateString("ModifiedDate", "08/01/2006");
            rs.insertRow();

            // Retrieve the inserted row of data and display it.
            SQL = "SELECT * FROM HumanResources.Department WHERE Name = 'Accounting';";
            rs = stmt.executeQuery(SQL);
            displayRow("ADDED ROW", rs);

            // Update the row of data.
            rs.first();
            rs.updateString("GroupName", "Finance");
            rs.updateRow();

            // Retrieve the updated row of data and display it.
            rs = stmt.executeQuery(SQL);
            displayRow("UPDATED ROW", rs);

            // Delete the row of data.
            rs.first();
            rs.deleteRow();
            System.out.println("ROW DELETED");
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void displayRow(String title,
            ResultSet rs) throws SQLException {
        System.out.println(title);
        while (rs.next()) {
            System.out.println(rs.getString("Name") + " : " + rs.getString("GroupName"));
            System.out.println();
        }
    }
}

См. также раздел

Работа с результирующими наборами