Клас DriverManager

КласDriverManagerє рівнем керування JDBC, відстежує всі доступні драйвери та керує встановленням з'єднань між БД та відповідним драйвером.

Перш ніж підключатися до сервера БД необхідно визначитися з відповідним драйвером JDBC, який є *.jar файл. У наступній таблиці представлено списокjdbc.driversдля кількох СУБД.

Примітка: 1. Драйвери найкраще завантажувати із сайту виробників СУБД. 2. Необхідно враховувати особливості використання підключення до сервера СУБД. Наприклад, якщо використовувати БД Derby у монопольному режимі, тобто. як сховище, краще підключати драйвер org.apache.derby.jdbc.EmbeddedDriver.

Для підключення драйвера найкраще розмістити його в одній з піддиректорії програми і прописати в classpath. При використанні IDE для розробки програми підключення драйвера JDBC можна виконати через інтерфейс середовища розробки.

DriverManager.registerDriver

Щоб сказати диспетчеру драйверів JDBC, який саме драйвер слід завантажити, необхідно виконати одну з команд:

  1. Class.forName("повне ім'я класу")
  2. Class.forName("повне ім'я класу").newInstance()
  3. DriverManager.registerDriver(new “повне ім'я класу”)

Команди все однозначні. Завдання полягає в тому, щобclassloaderзавантажив потрібний драйвер. Наприклад:

Завантаження драйвера JDBC може здійснюватися іншим способом. При викликі Java машини (JVM) можна вказати у значенні спеціальної системної властивостіjdbc.driversназву класу JDBC драйвера:

У цьому випадку при першій спробі з'єднання з базою даних менеджер драйверів автоматично сам завантажить класвказаний у системній властивостіjdbc.drivers.

Вибирайте будь-який спосіб, орієнтуючись на те, чи потрібно вам надалі переходити на іншу СУБД. Якщо так, то, другий спосіб буде кращим. Особливо для тих, хто пише програми для широкого загалу. А їй властиво бажати самостійно вибирати, чим користуватися.

Примітка: якщо при виконанні програми ви отримуєте помилку No driver available - це, швидше за все, означає, що ви просто неправильно вказали шлях до драйвера в змінній CLASSPATH.

Класи драйверів JDBC розробляються зі статичною секцією ініціалізації, в якій екземпляр певного класу створюється та реєструється в класіDriverManagerпід час завантаження. Таким чином, програма може не викликатиDriverManager.registerDriverбезпосередньо. Цей виклик автоматично робиться самим драйвером під час завантаження класу драйвера.

Для забезпечення безпеки керування драйвером JDBCDriverManagerвідстежує, яким завантажувачем класів ClassLoader завантажено драйвер. При відкритті з'єднання з сервером БД використовується тільки драйвер, що надійшов або з локальної файлової системи, або завантажені тим же ClassLoader, яким завантажено додаток, що запросило з'єднання з БД.

З'єднання з сервером БД

DriverManager.getConnection

Встановлювати з'єднання з БД можна одразу після реєстрації драйвера JDBC. Для цього слід викликати методDriverManager.getConnection, якому передаються параметри з'єднання з БД.DriverManagerопитує кожен зареєстрований драйвер з метою визначення, який з них може встановити це з'єднання. Може виявитися, що з'єднання за параметрами URL може мати більше одного драйвера JDBC. У цьому випадку важливийпорядок, у якому відбувається це опитування, оскільки DriverManager використовуватиме перший драйвер, що відгукнувся на URL.

Міст JDBC-ODBC-Bridge

Отримати доступ до сервера бази даних можна з використанням моста JDBC – ODBC. Програма взаємодії між драйвером JDBC та ODBC була розроблена фірмою JavaSoft у співпраці з InterSolv. Ця "зв'язка" реалізована у вигляді класу JdbcOdbc.class (для платформи Windows JdbcOdbc.dll).

При використанні JDBC - ODBC необхідно брати до уваги, що, крім JdbcOdbc-бібліотек, повинні існувати спеціальні драйвера (бібліотеки), які реалізують безпосередній доступ до баз даних через стандартний інтерфейс ODBC. Як правило, ці бібліотеки описуються у файлі ODBC.INI.

На внутрішньому рівніJDBC-ODBC-Bridgeперетворює методи Java на виклики ODBC і тим самим дозволяє використовувати будь-які існуючі драйвери ODBC, яких на сьогодні накопичено вдосталь. Однак найчастіше все-таки використовується механізм ODBC завдяки його універсальності та доступності.

Особливості використання JDBC-ODBC

JDBCDriverManagerє "хребтом" JDBC-архітектури, і його основна функція дуже проста - з'єднати Java-програму та відповідний JDBC драйвер і потім "вийти з гри". Структура драйвера ODBC була взята як основа JDBC через його популярність серед незалежних постачальників програмного забезпечення та користувачів. Але може виникнути законне питання – а навіщо взагалі потрібний JDBC? Чи не легше було організувати інтерфейсний доступ до ODBC-драйверів безпосередньо з Java? Шлях через JDBC-ODBC-Bridge, як не дивно, може виявитися набагато коротшим. З чим це пов'язано:

  • ODBC заснований на C-інтерфейсі і його не можна використовувати безпосередньо зJava. Виклик із Java C-коду порушує цілісну концепцію Java та пробиває пролом у захисті.
  • Оскільки Java немає покажчиків, а ODBC їх використовує, то перенесення ODBC C-API в Java-API небажаний.
  • Java-API необхідний, щоб досягти абсолютно чистих Java рішень. Коли ODBC використовується, то ODBC-драйвер і менеджер ODBC повинні бути інстальовані на кожній клієнтській машині. У той же час, JDBC драйвер написаний повністю на Java і може легко переноситися на будь-які платформи.

Наступний код демонструє з'єднання з сервером БД з використанням мостуjdbc-odbc-bridge: