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