1. Java DataBase Connectivity

Ти знаєш основи SQL. Це добре. Але сьогодні тобі стане ще краще. Сьогодні ти почнеш вивчати, як працювати з базою даних із Java-застосунку.

Різних СУБД дуже багато, тому творці Java вирішили стандартизувати роботу Java-застосунків із базами даних. І назвали вони цей стандарт JDBC — Java DataBase Connectivity.

У JDBC є 3 основні інтерфейси:

  • Connection — відповідає за з'єднання з базою даних
  • Statement — відповідає за запит до бази даних
  • ResultSet — відповідає за результат запиту до бази даних

Фактично це все. І ми навіть не вивчатимемо всі методи всіх інтерфейсів — лише робочі приклади, які потроху ускладнюватимемо.

JDBC чимось нагадує роботу із сервлетами. Творці JDBC написали кілька інтерфейсів і назвали це Java DataBase API. А реалізацію цих інтерфейсів поклали на творців СУБД. Як воно там реалізовано — нікого не цікавить. Працює і добре.

Є чотири версії JDBC, і ми будемо вивчати останню. І не тому, що вона найкрутіша, а тому що вона найпростіша.

2. JDBC Driver Manager

Java-застосунок та база даних спілкуються один з одним за допомогою бібліотеки, яка називається JDBC Driver. Це набір класів, які реалізують JDBC API для конкретної СУБД.

Правильний JDBC драйвер обирається за допомогою класу під назвою DriverManager. Їхню взаємодію можна показати за допомогою такого малюнку:

Штука в тому, що ти можеш використовувати In-Memory-DB, No-SQL-DB або навіть базу даних, вбудовану в Android-застосунок. Тебе як Java-розробника ці нюанси взагалі не стосуються. Driver Manager обере тобі правильний JDBC драйвер, і все буде працювати як годинник.

До речі, а як він це робить?

3. Підключаємося до MySQL-серверу

Пам'ятаєш, що тобі потрібно було, щоб підключитися до локального SQL-сервера через MySQL Workbench? Якщо забув, то я нагадаю. Тобі були потрібні три речі:

  • host
  • login
  • password

З логіном та паролем все зрозуміло, а host, якщо ти пам'ятаєш — це ім'я комп'ютера, на якому розташований сервер. Якщо він розташований у тебе на локальному комп'ютері, то як ім'я хоста потрібно вказати localhost. А якщо не на локальному?

Тоді потрібно використовувати URL. URL розшифровується як Universal Resource Locator. Його можна використовувати для зазначення розташування чого-небудь в мережі: сайту, принтера, SQL-сервера. Насправді URL використовується для доступу до локального SQL-серверу. Він має приблизно такий вигляд:


mysql://localhost:3306/ db_scheme
  • mysql — це протокол роботи з сервером
  • localhost — ім'я хоста в мережі
  • 3306 — порт, яким йдуть запити
  • db_scheme — ім'я схеми (ім'я бази даних)

Примітка. Ім'я бази даних можна не вказувати. Але якщо сервер зберігає багато схем баз даних, то зазвичай до них створюють різних користувачів та різні права доступу. І якщо у користувача, під яким ти логінишся на SQL-сервер, немає доступу до всіх баз, тобі обов'язково потрібно вказати ім'я конкретної бази, до якої маєш доступ.

Наприкінці цього URL можуть йти різні параметри, типи кодування, timezone, які вважаються параметрами для нового з'єднання з базою даних.

Також протокол може бути складеним. Якщо все спілкування з сервером бази даних йде зашифрованим каналом за допомогою SSH-протоколу, тоді URL може бути вказано так:


 ssh:mysql://localhost:3306/db_scheme

Протокол — це не обов'язково зовнішня програма. Наприклад, якщо ти працюєш із сервером за протоколом JNDI, то можеш вказати його так:


jndi:mysql://localhost: 3306/db_scheme

А якщо хочеш працювати за протоколом JDBC API, то потрібно писати так:


jdbc:mysql://localhost: 3306/db_scheme

Коли ти намагаєшся створити підключення до бази даних, то JDBC Driver Manager аналізує твою SQL-db-URL і визначає ім'я JDBC-драйвера за ім'ям протоколу. Ось така маленька хитрість.