В этом руководстве вы узнаете, как обновлять данные в таблице 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.