Бесплатный курс по Java: от основ до продвинутого уровня
Основы JDBC в Java
JDBC – программный интерфейс для взаимодействия Java приложения и базы данных.
То есть, грубо говоря, мы можем работать с базой данных из Java программы.
В JDBC есть три основных класса для работы с базой:
Connection – для установки соединения с базой.
Statement – для выполнения sql запросов.
ResultSet – для получения результатов запроса.
Пример программы:
import java.sql.*;
public class JDBCApp {
public static void main(String[] args)
throws ClassNotFoundException, SQLException {
//В метод Class.forName нужно передать
//драйвер mysql благодаря которому DriverManager
//будет понимать что мы пытаемся подключиться
//именно к mysql базе так как базы бывают разные.
Class.forName(“com.mysql.cj.jdbc.Driver”);
//В метод getConnection передаем ссылку
//на базу, имя пользователя и пароль mysql
//таким образом устанавливается соединение
//текущей программы JDBCApp с базой данных
Connection connection =
DriverManager.getConnection(
“jdbc:mysql://localhost/storage”,
“root”, “07998MSD”);
//Чтобы передать запрос базе данных нужен
//объект statement, который возвращается из метода
//createStatement нашего соединения (connection)
Statement statement = connection.createStatement();
//executeUpdate – для обновления, создания
//или удаления чего в базе данных.
//Например создаем таблицу Books ниже.
statement.executeUpdate(“Create table Books ”
+”(id middleint not null auto_increment, ”
+”name VARCHAR(30) not null, ”
+”author VARCHAR(30) not null, PRIMARY KEY (id));”);
//И добавим пару книг в таблицу
statement.executeUpdate(“INSERT INTO Books ”
+”(name, author) VALUES (‘LOTR’, ”
+”‘Tolkien’);”);
statement.executeUpdate(“INSERT INTO Books ”
+”(name, author) VALUES (‘Camera Obscura’, ”
+”‘Nabokov’);”);
//далее можем передавать запрос
//через метод executeQuery, который возвращает
//объект ResultSet, который
//содержит результат запроса
ResultSet resultSet = statement.executeQuery(
“SELECT * FROM Books”);
System.out.println(“\nBooks:”);
//То есть как видим мы просто работаем с базой
//теми же самыми SQL запросами, которыми мы
//пользовались и раньше, но теперь через
//Java программу.
//next проходит по строкам таблицы базы данных
while (resultSet.next()) {
//в метод getType передаем номер атрибута
//или имя атрибута строки таблицы
int id = resultSet.getInt(“id”);
String name = resultSet.getString(“name”);
String author = resultSet.getString(“author”);
System.out.println(“\n====================\n”);
System.out.println(“id: ” + id);
System.out.println(“name: ” + name);
System.out.println(“author: ” + author);
}
System.out.println(“\n====================\n”);
System.out.println(“Closing connection and ”
+ “releasing resources…”);
resultSet.close();
statement.close();
connection.close();
}
}
Вывод:
Видим на консоли добавленные нами книги в базу данных.
Полное руководство по транзакциям в JDBC: работа с commit и rollback, управление группами SQL-запросов и обработка ошибок для сохранения целостности данных.
Time to read: 13
Savepoint в JDBC транзакциях
Используйте Savepoint в JDBC для точечного отката транзакций. Узнайте, как отменять только часть SQL-запросов при ошибках, сохраняя предыдущие изменения в базе данных.
Time to read: 13
Изоляция транзакций. Грязное чтение
Узнайте, что такое грязное чтение в транзакциях SQL и JDBC. Разберитесь с уровнями изоляции TRANSACTION_READ_COMMITTED и TRANSACTION_READ_UNCOMMITTED на практических примерах.