Java SQL Server: Вставка данных

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

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