Реализация доступа к базам данных в среде JBUILDER и среде JDEVELOPER
Работа с базами данных
Язык Java позволяет реализовывать два механизма доступа к базам данных:
- с применением средств JDBC;
- с использованием SQLJ.
При реализации доступа через JDBC могут использоваться:
- JDBC-драйверы;
- мост JDBC-ODBC.
При реализации доступа через SQLJ SQL-операторы встраиваются непосредственно в код на языке Java, а затем обрабатываются SQLJ-предкомпилятором. Обычный SQLJ-предкомпилятор ограничивает синтаксис встраиваемых SQL-операторов стандартом SQL-92. Однако при применении SQLJ-предкомпиляторов, ориентированных на конкретные СУБД, допускается использование конструкций языка SQL, реализуемых в этих СУБД. Так, SQLJ-предкомпилятор для Oracle 9i позволяет не только статическое, но и динамическое встраивание SQL-операторов.
Реализация доступа к базам данных в среде JBUILDER
При создании программ на языке Java можно придерживаться "чистого" Java, что ограничивает возможности программиста использованием только классов и интерфейсов пакетов JDK. Однако, различные существующие среды программирования, включая и JBuilder, значительно расширяют возможности программиста, предоставляя дополнительные библиотеки классов. Далее будут рассмотрены классы и интерфейсы, применяемые для реализации доступа к базам данных как из пакетов JDK, так и предоставляемые средой JBuilder.
JBUILDER предоставляет средства для доступа к различным форматам данных из источников данных. Это могут быть текстовые файлы, содержащие табличную информацию, или таблицы базы данных.
JBUILDER позволяет реализовывать доступ к базам данных с применением драйверов JDBC и с использованием моста JDBC-ODBC, реализующего непосредственный доступ к базе данных через ODBC-драйверы. Мост JDBC-ODBC может быть использован и в том случае, если JDBC-драйвер для базы данных отсутствует.
На следующей схеме представлен механизм взаимодействия компонентов, реализующих работу с базой данных.
Преимущество доступа с использованием JDBC-драйвера заключается в том, что нет необходимости устанавливать эти драйверы на каждой клиентской машине (в отличие от ODBC-драйверов, которые предварительно должны быть зарегистрированы на каждом клиенте).
Для реализации доступа к любому источнику данных в приложение должен быть добавлен компонент, представляющий связь с конкретным источником данных. К таким компонентам относятся:
- Connection - интерфейс из пакета java.sql, используемый для соединения с источником данных.
- Database - используется для указания класса драйвера и местоположения базы данных.
- TextDataFile - указывает используемый текстовый файл.
- DataStore - для доступа к базе данных DataStore.
Компоненты, представляющие в приложении структуру извлекаемых данных, называются наборами данных. К таким компонентам относятся:
- ResultSet - набор данных для "чистого" Java.
- TableDataSet - позволяет указать имя таблицы или имя текстового файла, представляющих источник данных, и определить параметры столбцов набора данных (тип, размер, значение по умолчанию, заголовок и т.д.).
- QueryDataSet - используется для определения набора данных в терминах SQL-оператора.
Приложение может содержать компоненты, предназначенные для отображения информации из набора данных. Страница dbSwing палитры компонентов окна дизайнера содержит визуальные компоненты, специально предназначенные для отображения набора данных (эти классы не входят в JDK). К таким компонентам относятся:
- JdbCheckBox - флажок.
- JdbRadioButton - переключатель (радиокнопка).
- JdbTextField - текстовое поле.
- JdbComboBox - раскрывающийся список.
- JdbSlider - бегунок
- JdbTextPane - многострочное текстовое поле
- JdbToggleButton - кнопка переключатель
- JdbLabel - надпись
- JdbTable - таблица
- JdbTree - дерево.
- JdbList - список значений поля текущей записи.
Для навигации по полям и записям набора данных можно использовать компонент JdbNavToolBar,
который предоставляет стандартный интерфейс, включающий возможность перехода от записи к записи, переход к первой и последней записи, добавление и удаление записи, отмена изменений, выполненных над текущей записью, обновление набора данных и фиксация сделанных изменений. Для изменения предусмотренного по умолчанию поведения кнопок компонента JdbNavToolBar можно:- создать производный класс и переопределить метод обработки сообщений actionPerformed() ;
- получить ссылку на кнопку компонента и удалить в JdbNavToolBar ActionListener для кнопки, а затем добавить свой ActionListener.
Для определения текущего набора данных, используемого компонентом, следует вызвать метод getFocusedDataSet().
Дополнительно пакет com.borland.dbswing предоставляет компоненты, которые также могут использоваться для навигации по набору данных, включая:
- JdbNavField - компонент, наследуемый от JTextField, и позволяющий выполнять поиск в наборе данных введенного значения, и при нахождении его делать найденную запись текущей. Набор данных, в котором выполняется поиск, определяется свойством dataSet, а столбец - свойством columnName. Если свойство columnName не указано, то используется столбец в таблице JdbTable, имеющий фокус, а если такого столбца нет - то первый столбец набора данных;
- JdbNavComboBox и JdbNavList - компоненты, отображающие список значений столбца набора данных; при выборе элемента списка данная запись становится текущей. Набор данных, по которому выполняется навигация, определяется свойством dataSet, а столбец - свойством columnName (а при отсутствии значения данного свойства - так же как и для компонента JdbNavField );
- JdbNavTree - компонент, наследуемый от JTree и позволяющий устанавливать текущей записью запись, выбранную в данном компоненте. Отображаемые значения определяются значениями свойств dataSet и columnName.