JDBC. Java и Firebird

JDBC пример

JDBC – это интерфейс, определяющий функции для работы с СУБД. Этот инерфейс реализуется драйверами для конкретных СУБД. А драйвер, как известно, занимает место между базой данных и приложением. JDBC пример

Рассмотрим пример, который свяжет Java-приложение с СУБД Firebird. Работать будем в среде Eclipse.

Что нам понадобится

Eclipse. Где взять Eclipse? Eclipse скачать можно с www.eclipse.org. Бесплатно. Java должна быть установлена до установки Eclipse.

Java. Где взять Java? Java скачать можно с www.oracle.com бесплатно.

Firebird. Где взять Firebird? Firebird скачать можно с https://sourceforge.net/projects/firebird/. Бесплатно.

Ещё понадобится JDBC драйвер JayBird.

Где взять JayBird? JayBird скачать можно с https://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

такой результат.