digital-garden/knowledge/dev/java/other/JDBC.md

22 lines
3.2 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date:
- - 2023-11-22
zero-link:
- "[[00 Java разработка]]"
parents:
- "[[Java Разработка]]"
linked:
---
JDBC (Java Database Connectivity) — это стандартный API, который определяет, как клиент может получить доступ к базе данных. Вот как он работает:
1. **Загрузка JDBC драйвера**: Прежде всего, необходимо загрузить JDBC драйвер, который обеспечивает связь между приложением Java и базой данных. Это делается через механизм рефлексии Java (например, `Class.forName("com.mysql.jdbc.Driver")`).
2. **Установление соединения**: Следующий шаг — установление соединения с базой данных. JDBC API предоставляет класс `DriverManager`, с помощью которого можно получить соединение (`Connection`) с базой данных, используя строку подключения (URL), имя пользователя и пароль.
3. **Создание запроса**: После установления соединения можно создать объект `Statement` или `PreparedStatement` для выполнения SQL-запросов. `PreparedStatement` используется для выполнения параметризованных запросов, что помогает предотвратить SQL инъекции.
4. **Выполнение запроса**: Используя объект `Statement` или `PreparedStatement`, можно выполнить SQL-запросы к базе данных. Для запросов, которые возвращают данные (например, SELECT), используется метод `executeQuery()`, который возвращает объект `ResultSet`. Для запросов, которые изменяют данные (например, UPDATE, INSERT, DELETE), используется метод `executeUpdate()`, который возвращает количество измененных строк.
5. **Обработка результатов**: Если запрос возвращает `ResultSet`, то его можно обработать, используя цикл `while` и методы получения данных (`getString`, `getInt` и т.д.), чтобы получить данные из каждой строки результата.
6. **Закрытие соединения**: После выполнения необходимых операций с базой данных, важно закрыть `ResultSet`, `Statement` и `Connection`, чтобы освободить ресурсы базы данных и предотвратить утечку памяти.
Все это обычно оборачивается в блоки try-catch-finally для обработки исключений и гарантированного закрытия ресурсов, даже если происходит исключение.