Java SQL Server: обновление данных

В этом руководстве вы узнаете, как обновлять данные в таблице SQL Server из программы на Java.

Это руководство начинается с того места, где закончилось руководство «Запрос данных из SQL Server с использованием оператора LIKE».

Обновление данных

Шаг 1. Определите новый метод в классе AuthorDB, который обновляет данные объекта Author:

public void update(Author author) throws DBException {
  if(author == null) {
    return;
  }
  var sql = "UPDATE Authors SET FirstName =?, LastName=?, BirthDate = ? WHERE AuthorID=?";
  try(var statement = connection.prepareStatement(sql)) {
    // Bind values to parameters
    statement.setString(1, author.getFirstName());
    statement.setString(2, author.getLastName());
    statement.setDate(3, Date.valueOf(author.getBirthDate()));
    statement.setInt(4, author.getAuthorId());
    // Execute the update
    statement.executeUpdate();
  } catch(SQLException e) {
    throw new DBException(e.getMessage());
  }
}

Как это работает.

Сначала определите метод update(), который принимает объект Author и выдает исключение DBException, если во время обновления возникает ошибка:

public void update(Author author) throws DBException {

Во-вторых, немедленно верните значение, если объект автора равен null:

if(author == null) {
  return;
}

В-третьих, создайте оператор UPDATE, который обновляет данные об авторе на основе идентификатора автора:

var sql = "UPDATE Authors SET FirstName =?, LastName=?, BirthDate = ? WHERE AuthorID=?";

В-четвертых, создайте подготовленный объект оператора:

try(var statement = connection.prepareStatement(sql)) {

В-пятых, привяжите значения к оператору:

statement.setString(1, author.getFirstName());
statement.setString(2, author.getLastName());
statement.setDate(3, Date.valueOf(author.getBirthDate()));
statement.setInt(4, author.getAuthorId());

В-шестых, выполните оператор UPDATE, вызвав метод executeUpdate() объекта PreparedStatement:

statement.executeUpdate();

Наконец, создайте новое исключение DBException, если во время обновления возникнет ошибка:

} catch(SQLException e) {
  throw new DBException(e.getMessage());
}

Шаг 2. Измените метод main() класса Main, чтобы найти автора с идентификатором 1 и обновить его имя:

import java.sql.SQLException;
public class Main {
    public static void main(String[] args) {
        try(var connection = SQLServerConnection.connect()) {
            var authorDB = new AuthorDB(connection);
            // Find author with id 1
            var author = authorDB.findById(1);
            // Change the first name
            author.setFirstName("Johnson");
            // Update the author
            authorDB.update(author);
        } catch(SQLException | DBException e) {
            System.err.println(e.getMessage());
        }
    }
}

Как это работает.

Сначала подключитесь к SQL Server:

try(var connection = SQLServerConnection.connect()) {

Во-вторых, создайте объект AuthorDB:

var authorDB = new AuthorDB(connection);

В-третьих, найдите автора с идентификатором 1:

var author = authorDB.findById(1);

В-четвертых, измените имя на Джонсон:

author.setFirstName("Johnson");

В-пятых, примените изменение к базе данных, вызвав метод update() объекта AuthorDB:

authorDB.update(author);

Наконец, отобразите ошибку, если автор не существует или обновление не удалось:

} catch(SQLException | DBException e) {
  System.err.println(e.getMessage());
}

Шаг 3. Запустите SQL Server Management Studio, подключитесь к SQL Server и выполните следующий запрос для получения данных об авторе с идентификатором 3:

SELECT * FROM Authors
WHERE AuthorId = 1;

Выход:

AuthorID | FirstName | LastName | BirthDate
---------+-----------+----------+-----------
1        | John      | Doe      | 1990-12-31
(1 row)

Шаг 4. Запустите программу Java для обновления имени автора:

Шаг 5. Повторите запрос для проверки обновления:

SELECT * FROM Authors
WHERE AuthorId = 1;

Выход:

AuthorID | FirstName | LastName | BirthDate
---------+-----------+----------+-----------
1        | Johnson   | Doe      | 1990-12-31
(1 row)

В результатах видно, что имя автора было обновлено на Джонсон.

Загрузите исходный код проекта

Загрузите исходный код проекта

Краткое содержание

  • Вызовите метод executeUpdate() объекта PreparedStatement, чтобы выполнить оператор UPDATE для обновления данных в таблице из программы Java.
Мирослав С.

Автор статей, ИБ-специалист