1. Maven

Найважливіша деталь — сама бібліотека JDBC Driver для MySQL сервера. Вона просто так не з'явиться на твоєму комп'ютері — треба її додати.

Якщо ти використовуєш Maven, тобі потрібно допомогти йому: вказати потрібну бібліотеку.

JDBC-драйвер для MySQL:

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

На mvn repository, можна перевірити оновлення

Просто додай цей код до твого pom.xml.

Також наведу ще кілька популярних драйверів.

JDBC-драйвер для PostgeSQL:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.4.0</version>
</dependency>

JDBC-драйвер для Oracle:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.5.0.0</version>
</dependency>

JDBC драйвер для H2:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

2. Перший запит до бази даних

Усі необхідні бібліотеки підключені — тепер настав час запустити твою першу програму з доступом до бази даних. Писатимемо весь код у методі main().

Етап 1. Додай перед методом main() кілька імпортів — це суттєво полегшить тобі життя:


import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

Етап 2. Спершу нам потрібно створити підключення до бази даних. Для цього у методі main() напиши такий код:


   Connection connection = DriverManager.getConnection(
              "jdbc:mysql://localhost:3306/test",
              "login", "password");

Можна і в один рядок — як тобі буде зручніше. Логін та пароль, ясна річ, потрібно підставити реальні від твого локального MySQL-сервера.

Етап 3. Створюємо запит до бази даних. Давай дістанемо всіх користувачів із таблиці user. Тоді тобі потрібно буде додати такий рядок коду:


        Statement statement = connection.createStatement();
    ResultSet results = statement.executeQuery("SELECT * FROM user");

Це аж два рядки. У першому ми створюємо об'єкт Statement, а в другому за його допомогою виконуємо запит до бази даних. Метод executeQuery() виконує запит до бази даних та повертає об'єкт типу ResultSet.

Етап 4. Виведемо на екран дані, що містяться в об'єкті ResultSet.

ResultSet — це не множина, він просто так називається. У ньому зберігається результат виконання запиту. Цей об'єкт чимось схожий на ітератор: він дозволяє встановлювати/міняти поточний рядок результату, а потім із цього поточного рядка можна отримати дані. Додай до свого прикладу такий код:


    while (results.next()) {
        Integer id = results.getInt(1);
        String name = results.getString(2);
        System.out.println(results.getRow() + "." + id + "\t"+ name);
    }

Метод next() змінює поточний рядок результату на наступний. Він повертає true, якщо такий рядок є і false, якщо рядки закінчилися.

Потім з поточного рядка об'єкта ResultSet можна отримати дані з його колонок:

  • getRow() — поверне номер поточного рядка в об'єкті ResultSet
  • getInt(N) — поверне дані N-ї колонки поточного рядка як тип int
  • getString(N) — поверне дані N-ї колонки поточного рядка як тип String

3. Повний лістинг програми

Щоб мінімізувати помилки, наведу нижче повний лістинг програми:


package org.example;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class JdbcApplication {
    public static void main(String[] args) throws Exception{
 Connection connection = DriverManager.getConnection(
          "jdbc:mysql://localhost:3306/test",
          "root", "secret");
 
        Statement statement = connection.createStatement();
    ResultSet results = statement.executeQuery("SELECT * FROM user");
 
    while (results.next()) {
        Integer id = results.getInt(1);
        String name = results.getString(2);
        System.out.println(results.getRow() + "." + id + "\t"+ name);
    }
    connection.close();
    }
}

І ось моє виведення на екран після запуску програми:

"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe…
1. 1Іванов Іван
2. 2Петров Микола
3. 3Сідоров Віталій
Process finished with exit code 0