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