В этом руководстве вы узнаете, как вставлять данные в таблицу SQL Server с помощью программы Java.
Это руководство начинается с того места, где закончилось руководство по подключению к SQL Server из руководства по программе Java.
Вставка данных в таблицу из Java
Ниже приведены шаги для вставки данных в таблицу SQL Server из программы Java с использованием JDBC:
- Сначала откройте новое подключение к базе данных SQL Server.
- Затем создайте новый объект PreparedStatement, который принимает оператор INSERT.
- Затем задайте параметры для оператора, вызвав методы set* объекта PreparedStatement.
- После этого вызовите метод executeUpdate() объекта PreparedStatement, чтобы выполнить оператор INSERT и вставить новую строку в таблицу.
- Наконец, закройте подготовленный оператор и соединение с базой данных.
Если вы используете оператор try-with-resources, вам не нужно вручную закрывать подготовленный оператор и соединение с базой данных.
Вставка автора
Шаг 1. Создайте новый файл Author.java, в котором хранится класс Author:
import java.time.LocalDate;
public class Author {
private String firstName;
private String lastName;
private LocalDate birthDate;
public Author(String firstName, String lastName, LocalDate birthDate) {
this.firstName = firstName;
this.lastName = lastName;
this.birthDate = birthDate;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public LocalDate getBirthDate() {
return birthDate;
}
public void setBirthDate(LocalDate birthDate) {
this.birthDate = birthDate;
}
@Override
public String toString() {
return "Author{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", birthDate=" + birthDate +
'}';
}
}
Шаг 1. Создайте новый файл Java AuthorDB.java и определите класс AuthorDB:
public class AuthorDB {
}
Шаг 2. Добавьте метод insert() в класс AuthorDB:
import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;
public class AuthorDB {
private final Connection connection;
public AuthorDB(Connection connection) {
this.connection = connection;
}
public void insert(Author author) {
if(author == null) {
return;
}
var sql = "INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(?,?,?)";
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()));
// Execute the query
statement.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
}
}
}
Как это работает.
Сначала импортируйте классы Date, SQLException и Connection из пакета java.sql:
import java.sql.Date; import java.sql.SQLException; import java.sql.Connection;
Во-вторых, добавьте свойство подключения к классу AuthorDB:
private final Connection connection;
В-третьих, определите конструктор, который принимает объект Connection:
public AuthorDB(Connection connection) {
this.connection = connection;
}
В-четвертых, определите метод insert(), который принимает объект Author и вставляет новую строку с данными из объекта Author в таблицу Authors:
public void insert(Author author) throws DBException
В-пятых, немедленно верните значение, если объект автора равен null:
if(author == null) {
return;
}
В-шестых, создайте оператор INSERT, который вставляет новую строку в таблицу Authors:
var sql = "INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(?,?,?)";
В запросе вопросительные знаки(?) являются заполнителями для параметров. Они будут заменены фактическим значением во время выполнения. Такой подход обеспечивает безопасную передачу пользовательского ввода в SQL-запрос, что помогает предотвратить атаки SQL-инъекций.
В-седьмых, создайте объект PreparedStatement с помощью оператора INSERT:
try(var pstmt = connection.prepareStatement(sql)) {
В-восьмых, привяжите фактические значения к заполнителям в операторе INSERT:
statement.setString(1, author.getFirstName()); statement.setString(2, author.getLastName()); statement.setDate(3, Date.valueOf(author.getBirthDate()));
В-девятых, вызовите метод executeUpdate() объекта PreparedStatement, чтобы выполнить оператор INSERT и вернуть количество вставленных строк:
statement.executeUpdate();
Наконец, выдайте новое исключение DBException, если во время вставки произошла ошибка:
throw new DBException(e.getMessage());
Шаг 3. Измените метод main() класса Main, чтобы использовать метод insert() класса AuthorDB:
import java.sql.SQLException;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
// Create a new Author object
var author = new Author("John","Doe",LocalDate.of(1990, 12, 31));
// Connect to the SQL Server
try(var connection = SQLServerConnection.connect()) {
// Create a new AuthorDB object
var authorDB = new AuthorDB(connection);
// Insert the author into the database
authorDB.insert(author);
} catch(SQLException | DBException e) {
System.err.println(e.getMessage());
}
}
}
Как это работает.
Сначала создайте новый объект Author для вставки:
var author = new Author("John","Doe",LocalDate.of(1990, 12, 31));
Во-вторых, вызовите метод connect() класса SQLServerConnection для подключения к SQL Server:
try(var connection = SQLServerConnection.connect())
В-третьих, создайте новый объект AuthorDB:
var authorDB = new AuthorDB(connection);
В-четвертых, вставьте нового автора в базу данных, вызвав метод insert() объекта AuthorDB:
authorDB.insert(author);
Наконец, перехватите SQLException и DBException и отобразите ошибку:
} catch(SQLException | DBException e) {
System.err.println(e.getMessage());
}
Шаг 4. Запустите программу Java.
Проверьте вставку
Шаг 1. Откройте SQL Server Management Studio(SSMS) и подключитесь к SQL Server.
Шаг 2. Выполните следующий запрос для извлечения данных из таблицы Authors:
SELECT * FROM Authors;
Выход:
AuthorID | FirstName | LastName | BirthDate ---------+-----------+----------+------------ 1 | John | Doe | 1990-12-31 (1 row)
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Вызовите метод executeUpdate() объекта PreparedStatement, чтобы выполнить оператор INSERT для вставки строки в таблицу.
