Тип 1. JDBC – ODBC транслятор

Что такое JDBC?

Java Database Connectivity – это стандартный API для независимого соединения языка программирования Java с различными базами данных (далее – БД).

JDBC решает следующие задачи:

· Создание соединения с БД.

· Создание SQL выражений.

· Выполнение SQL – запросов.

· Просмотр и модификация полученных записей.

Если говорить в целом, то JDBC – это библиотека, которая обеспечивает целый набор интерфейсов для доступа к различным БД.

Для доступа к каждой конкретной БД необходим специальный JDBC – драйвер, который является адаптером Java – приложения к БД.

Строение JDBC

JDBC поддерживает как 2-звенную, так и 3-звенную модель работы с БД, но в общем виде, JDBC состоит из двух слоёв.

· JDBC API
Обеспечивает соединение “приложение – JDBC Manager”.

· JDBC Driver API
Обеспечивает соединение “JDBC Manager – драйвер”.

JDBC API использует менеджер драйверов и специальные драйверы БД для обеспечения подключения к различным базам данных.

JBDC Manager проверяет соответствие драйвера и конкретной БД. Он поддерживает возможность использования нескольких драйверов одновременно для одновременной работы с несколькими видами БД.

Схематично, JDBC можно представить в таком виде:

Рассмотрим элементы JDBC по отдельности.



Элементы JDBC

JDBC API состоит из следующих элементов:

· Менеджер драйверов (Driver Manager)
Этот элемент управляет списком драйверов БД. Каждой запрос на соединение требует соответствующего драйвера. Первое совпадение даёт нам соединение.

· Драйвер (Driver)
Этот элемент отвечает за связь с БД. Работать с ним нам приходится крайне редко. Вместо этого мы чаще используем объекты DriverManager, которые управляют объектами этого типа.

· Соединение (Connection)
Этот интерфейс обеспечивает нас методами для работы с БД. Все взаимодействия с БД происходят исключительно через Connection.

· Выражение (Statement)
Для подтверждения SQL-запросов мы используем объекты, созданные с использованием этого интерфейса.

· Результат (ResultSet)
Экземпляры этого элемента содержат данные, которые были получены в результате выполнения SQL – запроса. Он работает как итератор и “пробегает” по полученным данным.

· Исключения (SQL Exception)
Этот класс обрабатывает все ошибки, которые могут возникнуть при работе с БД.







Пакеты JDBC

Ключевыми пакетами JDBC являются java.sql и javax.sql. На момент написания этого руководства, текущей версией JDBC является JDBC 4.0.
С отличиями этой спецификации от предыдущих вы можете ознакомиться в JDBC Specification.

Вот основные изменения:

· Улучшенная обработка исключений.

· Автоматическая загрузка драйвера БД.

· Улучшения интерфейсов Connection и Statement.

· Поддержка национальных символов.

· Поддержка типа данных SQL 2003 XML.

· Аннотации.

· Доступ SQL ROWID.

Руководство по JDBC. Пример простого приложения.

В этом уроке мы создадим простой Java приложение с использованием JDBC, в котором мы создадим соединение с базой данных (далее – БД), выполним несколько SQL – запросов и отобразим результат в консоли.

Для создания данного приложения нам необходимо выполнить следующие шаги.

· Создать простое Java приложение

· Создать базу данных и таблицу в ней

· Импортировать пакет java.sql.*

· Использовать JDBC драйвер

· Создать соединение

· Выполнить запрос

· Получить данные из БД

· Закрыть соединения

Рассмотрим пример простого приложения.

Пример:

Исходный код проекта можно скачать по ЭТОЙ ССЫЛКЕ.
Добавляем завимость MySQL Connector (MySQL драйвер) в POM.xml

 

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.38</version>

</dependency>

 

Создание таблицы developers в БД

 

CREATE TABLE PROSELYTE_TUTORIALS.developers (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NOT NULL,

specialty VARCHAR(50) NOT NULL,

salary INT NOT NULL,

PRIMARY KEY (id));

 

Добавление записей в таблицу developers

 

INSERT INTO PROSELYTE_TUTORIALS.developers (name, specialty, salary) VALUES ('Proselyte', 'Java', '2000');

INSERT INTO PROSELYTE_TUTORIALS.developers (name, specialty, salary) VALUES ('Peter','C++', '3000');

INSERT INTO PROSELYTE_TUTORIALS.developers (name, specialty, salary) VALUES ('AsyaSmile', 'UI/UX', '2000');

 

Класс DevelopersJdbcDemo

 

import java.sql.*;

 

public class DevelopersJdbcDemo {

/**

* JDBC Driver and database url

*/

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";

static final String DATABASE_URL = "jdbc:mysql://localhost/PROSELYTE_TUTORIALS";

 

/**

* User and Password

*/

static final String USER = "ВВЕДИТЕ ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ";

static final String PASSWORD = "ВВЕДИТЕ ВАШ ПАРОЛЬ";

 

public static void main(String[] args) throws ClassNotFoundException, SQLException {

   Connection connection = null;

   Statement statement = null;

 

   System.out.println("Registering JDBC driver...");

 

   Class.forName("com.mysql.jdbc.Driver");

 

   System.out.println("Creating database connection...");

   connection = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD);

 

   System.out.println("Executing statement...");

   statement = connection.createStatement();

 

   String sql;

   sql = "SELECT * FROM developers";

 

   ResultSet resultSet = statement.executeQuery(sql);

 

   System.out.println("Retrieving data from database...");

   System.out.println("\nDevelopers:");

   while (resultSet.next()) {

       int id = resultSet.getInt("id");

       String name = resultSet.getString("name");

       String specialty = resultSet.getString("specialty");

       int salary = resultSet.getInt("salary");

 

       System.out.println("\n================\n");

       System.out.println("id: " + id);

       System.out.println("Name: " + name);

       System.out.println("Specialty: " + specialty);

       System.out.println("Salary: $" + salary);

   }

 

   System.out.println("Closing connection and releasing resources...");

   resultSet.close();

   statement.close();

   connection.close();

}

}

 

 

В результате работы программы мы получим следующий результат:

 

/*Some System Messages*/

 

Registering JDBC driver...

Creating database connection...

Executing statement...

Retrieving data from database...

 

Developers:

 

================

 

id: 1

Name: Proselyte

Specialty: Java

Salary: $2000

 

================

 

id: 2

Name: Peter

Specialty: C++

Salary: $3000

 

================

 

id: 3

Name: AsyaSmile

Specialty: UI/UX

Salary: $2000

Closing connection and releasing resources...

 

Так будет выглядеть наша таблица в БД

 

mysql> SELECT * FROM developers;

+----+-----------+-----------+--------+

| id | name | specialty | salary |

+----+-----------+-----------+--------+

| 1 | Proselyte | Java | 2000 |

| 2 | Peter | C++  | 3000 |

| 3 | AsyaSmile | UI/UX | 2000 |

+----+-----------+-----------+--------+

 

Драйверы.

Драйвер – это сущность, которая реализует определённые интерфейсы JDBC API для взаимодействия с сервером базы данных (далее – БД).

Например, именно драйвер даёт нам возможность открывать соединения и выполнять SQL – запросы и т.д.

Разработчики БД должны имплементировать интерфейс java.sql.Driver для того, чтобы их БД могла работать с JDBC.



Типы драйверов

Java работает с различным оборудованием и с различными операционными системами (далее – ОС), именно поэтому существуют различные драйверы реализующие JDBC для различных платформ.

Существует 4 типа драйверов для JDBC.

Рассмотрим их по отдельности:

Тип 1. JDBC – ODBC транслятор

Этот тип драйвера транслирует JDBC в установленный на каждой машине клиентской машине ODBC. Использование ODBC требует конфигурации DSN, который является целевой БД.

Изначально, именно этот тип драйверов был наиболее используемым, так как большинство БД поддерживало только ODBC.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: