Название: Java и базы данных - Методические указания (В.Н. Глазков)

Жанр: Информатика

Просмотров: 1489


Введение

 

Java обеспечивает доступ к базам данных с помощью интерфейса JDBC(Java Database Connectivity), функции которого реализованы в классах пакета java.sql.

Главные составляющие JDBC – диспетчер драйверов (ниже – ДД) DriverManager и драйвер. ДД загружает конкретные драйверы для приложения пользователя: мост JDBC-ODBC - программу сопряжения, драйвер JDBC и сетевой драйвер JDBC. Кроме того, он направляет вызовы на нужный драйвер и может предоставлять прикладной программе по необходимости информацию о драйвере.

Драйвер JDBC обрабатывает вызовы методов JDBC, создаёт

подключение и направляет SQL-инструкции конкретному источнику данных и возвращает результаты назад в приложение.

Драйвер JDBC-ODBC необходим, чтобы методы интерфейса ODBC стали доступны интерфейсу JDBC для доступа к источникам данных.

Архитектура JDBC имеет следующий вид (см. рисунок):

 

Приложение Java

      |                         <-- JDBC API 

Диспетчер драйверов JDBC

      |                    

Мост-драйвер JDBC-ODBC (драйвер JDBC-Net, драйвер а, драйвер b, ...)

      |

Драйвер ODBC n

      |

Собственный драйвер базы данных n

      |

Источник данных n

                       

Рис.1. Схема взаимодействия интерфейсов

 

Широко используется схема взаимодействия интерфейсов – мост JDBC-ODBC-Bridge. Поскольку JDBC конструктивно близок к ODBC и взаимодействует с любым ODBC-драйвером (собственным драйвером выбранной базы данных). Используемые далее классы JDBC

следующие:.

 

Тип                  Класс    

 

Драйвер                    Driver – драйвер.

                         DriverManager – диспетчер драйверов для выбо-

                              ранужного драйвера для соединения с БД.

Связь          Connection – соединение с конкретной БД для

                         дальнейших операций.

Инструкции  Statement – инструкция SQL для немедленной

                               посылки по соединению базе данных.

                         PreparedStatement – откомпилированная (под-

                               готовленная) SQL-инструкция.

                         CallableStatement – то же в контексте хранимых

                               процедур (содержащая вызов процедуры).

Результат      ResultSet – доступ к строкам выполненной ин-

                               струкции.

Мета-данные  DatabaseMetaData – информация о структуре БД

                               в целом.

                         ResultSetMetaData - информация о типе и свой-

                               ствах столбцов.

Дата/Время    Date – связан со временем: устанавливает поля

                               java.

                         util.data.hour, .minute, .second, .millisecond и в

                               ноль.

                         Time – связан со временем: устанавливает поля

                               java.

                         util.data.year, .month и .day в соответствии с да-

                               той 1 января 1970 года.

                         Timestamp – связан со временем: к тому же ус-

                               танавливает

                          и поле наносекунд.

Ошибки/Предупреждения         SQLException, SQLWarning.

 

В качестве драйвера может использоваться конкретный драйвер – драйвер моста JDBC-ODBC, который создаётся конструктором класса JdbcOdbcDriver и затем регистрируется диспетчером драйверов – классом DriverManager, его статистическим методом registerDriver(Driver):

 

Driver dr = new  sun.idbc.odbc.JdbcOdbcDriver();

java.sql.DriverManager.registerDriver(dr);

 

Другой метод загрузки: инициализировать и загрузить драйвер можно одной строкой – методом

 

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

 

Здесь осуществляется обращение к статическому методу forName() класса Class, который загружает класс по имени. Объекты-драйверы создаются и регистрируются во время загрузки.

Регистрация драйвера может отслеживаться на терминале или в другом потоке ввода/вывода. Для направления информации о регистрации в конкретный поток используется статистический метод класса DriverManager void setLogStream(PrintStream out).

Например, для вывода на экран

 

           Class.forName("...");

           DriverManager.setLogStream(System.out);

 

URL  базы данных

 

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

 

jdbc:subprotocol:subname

 

Здесь jdbc – указание на то, что используется интерфейс JDBC. Под subprotocol (подпротоколом) понимается имя конкретного драйвера или некоего механизма установления соединения с базой данных, например, ODBC. В URL-строку подставляется именно эта аббревиатура, так как структура JDBC основана на архитектуре библиотеки ODBC, а наиболее используемым подпротоколом является мост JDBC-ODBC, который указывается строкой odbc. В качестве subname используется идентификатор базы данных – псевдоним (или логическое имя, которое обозначает путь до базы данных и её имя), обычный DSN (Data Source Name).

Псевдоним регистрируется с помощью программы-администратора баз данных. Программа-администратор привязывает псевдоним к директории на диске, в которой располагаются таблицы базы данных и к самим таблицам. Процесс регистрации различается от платформы к платформе.

Например:

 

jdbc:odbc:dBase