Лекция 2: Подключение базы данных к Java с помощью JDBC

В рамках данной лекции будет рассмотрена технология JDBC (Java Database Connectivity) и её использование для подключения баз данных к Java-приложениям. JDBC представляет собой стандартный программный интерфейс, который позволяет Java-приложениям взаимодействовать с различными системами управления базами данных (СУБД).

Основная цель данной лекции — изучение процесса настройки окружения, подключения к базе данных, выполнения простых и сложных SQL-запросов, а также рассмотрение вопросов безопасности, производительности, транзакций и лучших практик работы с JDBC.

Подготовка рабочей среды

Для начала работы с JDBC необходимо подготовить рабочую среду:

  1. Установка базы данных

    Рекомендуется использовать MySQL. Также можно использовать H2 — встраиваемую БД, которая работает в памяти и не требует установки.

  2. Установка JDK и IDE

    Например, JDK 8+ и IntelliJ IDEA. Убедитесь, что версия JDK совместима с JDBC-драйвером.

  3. Подключение драйвера JDBC

    Для MySQL — mysql-connector-java.

    Maven:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>

    Gradle:

    implementation 'mysql:mysql-connector-java:8.0.33'

Подключение к базе данных

1. Загрузка драйвера

Class.forName("com.mysql.cj.jdbc.Driver");

2. Строка подключения

jdbc:mysql://localhost:3306/mydatabase

С параметрами:

jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC&useSSL=false&autoReconnect=true&characterEncoding=UTF-8

3. Учётные данные

Используйте безопасные логин и пароль, по возможности — не root.

4. Установление соединения

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC";
        String username = "root";
        String password = "your_password";

        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            System.out.println("Подключение к базе данных успешно установлено!");
        } catch (SQLException e) {
            System.err.println("Ошибка подключения к базе данных: " + e.getMessage());
        }
    }
}

Здесь используется try-with-resources — соединение автоматически закрывается.

Выполнение SQL-запросов

Для этого используется объект Statement:

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

Пример: извлечение всех пользователей

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC";
        String username = "root";
        String password = "your_password";

        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");

                System.out.println("ID: " + id + ", Имя: " + name + ", Возраст: " + age);
            }
        } catch (SQLException e) {
            System.err.println("Ошибка выполнения запроса: " + e.getMessage());
        }
    }
}

Пример с фильтрацией (WHERE age > 18)

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC";
        String username = "root";
        String password = "your_password";

        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM users WHERE age > 18");

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");

                System.out.println("ID: " + id + ", Имя: " + name + ", Возраст: " + age);
            }
        } catch (SQLException e) {
            System.err.println("Ошибка выполнения запроса: " + e.getMessage());
        }
    }
}

Вывод лекции

В рамках лекции рассматривается технология JDBC как стандартный программный интерфейс для подключения баз данных к Java-приложениям и её использование для выполнения SQL-запросов с акцентом на:

  • настройку окружения
  • подключение к базе данных
  • выполнение запросов
  • вопросы безопасности, производительности и транзакций

Для начала работы необходимо:

  • установить СУБД (например, MySQL или H2)
  • установить JDK и IDE
  • подключить драйвер JDBC через Maven или Gradle

Затем выполняется подключение к базе данных с использованием строки подключения URL, учётных данных и класса DriverManager, что приводит к созданию объекта Connection.

Выполнение SQL-запросов осуществляется с помощью объекта Statement:

  • executeQuery — для извлечения данных через ResultSet
  • executeUpdate — для изменения данных

Работа с ResultSet осуществляется через методы next() и getXXX(), также приведены примеры простой и фильтрованной выборки.

Особое внимание уделено:

  • обработке исключений
  • автоматическому закрытию соединений
  • безопасности и корректной работе с драйверами