JDBC. Java і Firebird

JDBC приклад

JDBC – це інтерфейс, який визначає функції для роботи з СУБД. Цей инерфейс реалізується драйверами для конкретних СУБД. А драйвер, як відомо, займає місце між базою даних і додатком. JDBC приклад

Розглянемо приклад, який зв'яже Java-програма з СУБД Firebird. Працювати будемо в середовищі Eclipse.

Де взяти Eclipse? Eclipse завантажити можна з http://www.eclipse.org/platform. Безкоштовно. Java повинна бути встановлена до установки Eclipse.

Де взяти Java? Java завантажити можна з www.sun.com безкоштовно.

Де взяти Firebird? Firebird завантажити можна з http://sourceforge.net/projects/firebird/. Безкоштовно.

Ще знадобиться JDBC драйвер JayBird.

Де взяти JayBird? JayBird завантажити можна з http://sourceforge.net/projects/firebird/ безкоштовно. Драйвер JayBird потрібен для зв'язку Java – додатки і Firebird бази даних.

Firebird

Встановіть Firebird. Я при установці не міняв ніяких налаштувань, запропонованих майстром. Результат на картинці: Eclipse

JayBird

Розпакуйте дистрибутив JayBird в будь-який каталог. Я розпакував його в папку JayBird диска «H», отримав ось що: JayBird

В цьому дистрибутиві нам знадобиться файл jaybird-full-2.1.3.

Java + JayBird + Firebird

Починаємо працювати з Eclipse (Eclipse Java). Відкриваємо Eclipse SDK. У правому верхньому куті повинна бути кнопка Java, як на малюнку. Якщо цього немає, тоді Window–>Open Perspective–>Java. Java + JayBird + Firebird

Створимо проект: File –> New –>Java Project або File –> New –> Project... і у вікні вибираємо Java Project, тиснемо Next. В полі Project Name вкажемо FBProject, тиснемо Finish. Зліва у вигляді Package Explorer отримуємо: JDBC

Правою кнопкою по src, в откившемся меню вибираємо New–>Package. Ім'я пакета в полі Name встановимо app. Отримуємо: JDBC

Повідомимо нашим проектом про існування драйвера JayBird. Для цього правою кнопкою по кореневій папці FBProject –> Built Path –> Add External Arhives..., відкриваємо папку з драйвером і вибираємо файл jaybird-full JayBird

Отримуємо: JayBird

Створіть папку Java_FB в будь-якому місці і помістіть в неї базу даних JAVA_FB.FDB(завантажити базу даних JAVA_FB.FDB (29 Кб)). У мене вийшло так: Firebird

Отже, що ми маємо? Ми створили проект FBProject, причепили до нього драйвер JayBird, створили базу даних Firebird JAVA_FB.FDB і помістили її за адресою H:\Java_FB. Тепер ми готові зробити програму для роботи з Firebird базою.

Правою кнопкою по пакету app –> New –> Class вводимо ім'я класу KApplication, встановимо прапор public static void main. Отриманий клас зробимо спадкоємцем JFrame і додамо поле serialVersionUID:

Перейдемо до моделі, яка буде зберігати інформацію з бази даних.

Вгору

AbstractTableModel

Додамо в пакет app клас моделі KModel: правою кнопкою по пакету app –> New –> Class AbstractTableModel

Змінимо код, створений майстром наступним чином:

Клас моделі ми успадкували від абстрактного класу AbstractTableModel, якщо перевизначити оголошені в ньому методи і додавши два своїх методу для роботи з даними, що зберігаються в моделі: setTableData і getTableData.

Настав час створити клас, який і буде єднати нас з базою даних.

Вгору

Java + Firebird

Нагадаю, наша база JAVA_FB.FDB працює під управлінням СУБД Firebird, JDBC драйвера для цієї СУБД називається JayBird. Створимо клас, який з'єднає нас з базою даних. Правою кнопкою по пакету app –> New –> Class. Ім'я класу KFDB: KFDB

Змінимо код класу KFDB, створений майстром так:

Ми оголосили в конструкторі класу параметри:
driver - це ім'я нашого драйвера JayBird;
url - адреса бази даних, у нас це адреса бази JAVA_FB.FDB;
login - ім'я користувача;
pass - пароль.

У блоці try/catch завантажуємо статичним методом forName дравер для бази даних. Статичним методом getConnection встановлюємо з'єднання з нашою базою даних. Клас DriverManager керує роботою драйверів. Якщо драйвер, в нашому випадку FireBird, не виявиться, то буде викинуто виняток ClassNotFoundException, а якщо DriverManager не зможе з'єднатися з нашою базою JAVA_FB.FDB, то буде викинуто виняток SQLException.

Поле con, що має тип Connection, можна представити як телефонний дріт, по якому інформація буде перетікати з нашого додатка в базу даних і назад.

Отримаємо з цього проводу інформацію з бази даних. Введемо поле st типу Statement. Це поле дасть нам можливість звернутися до бази даних з якимось конкретним запитом. Визначимо метод getNomen, який поверне інформацію з бази даних:

У методі getNomen створюємо об'єкт Statement st, він дозволить нам зробити запит до бази, сам запит виконується методом executeQuery, який повертає набір даних у вигляді об'єкта ResultSet rs. Цей набір даних можна представити як таблицю з бази даних, що містить дані та інформацію про цієї таблиці, наприклад, скільки стовпців є в таблиці. Інформацію про устойстве отриманого набору даних виймемо з об'єкта ResultSetMetaData rsmd. Нас цікавить кількість колонок в наборі даних. Для цього пишемо рядок: int cols = rsmd.getColumnCount(). Метод rs.next() переміщає нас за рядками набору даних. Отримавши перший рядок, що в циклі for витягаємо значення кожної комірки рядка методом rs.getObject(i) і додаємо його в вектор newVector. Сформований таким чином newVector додаємо в результуючий вектор retVector. Вектор retVector стає зображенням набору даних rs.

Повернемося до головного вікна програми,тобто до класу KApplication, і наведемо його код до виду(не забудьте вказати свій шлях до бази JAVA_FB.FDB !!!):

Компілюємо і запускаємо: правою кнопкою по класу KApplication –> Run As –> Java Application: Nomen

Отримуємо такий результат.