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>

Первый запрос к базе данных

Все нужные библиотеки подключены, теперь настало время запустить твою первую программу с доступом к базе данных. Писать весь код будем в методе 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

Полный листинг программы

Чтобы минимизировать ошибки, приведу ниже полный листинг программы:

package org.example;

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

public class JdbcApplicatin {
    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