Основы проектирования приложений баз данных

       

Построение SQLJ-приложений


Для создания SQLJ-приложения следует сформировать пустой проект, а затем добавить в него SQLJ-файл (команда меню File | New, выбрать пиктограмму SQLJFile).

SQLJ-файл - это файл с кодом программы на языке Java, в который включены SQLJ-операторы.

SQLJ-операторы могут быть двух видов:

  • SQLJ-объявления;
  • SQLJ-исполняемые операторы.

SQLJ-оператор может иметь следующее формальное описание:

#sql {sql-оператор }; // Оператор без возвращения результирующего набора

или

#sql выражение={sql-оператор}; // Оператор, возвращающий // результирующий набор

Для поддержки возможности подключения во время компиляции SQLJ-транслятора к базе данных, с целью проверки синтаксиса введенного SQL-кода, следует создать объект соединение (команда меню Project | Properties, вкладка SQLJ), установить флажок Check SQL semantics against database shcema, выбрать New Connection и определить параметры подключения к базе данных, введя ее URL-адрес (localhost на локальном компьютере), имя пользователя и пароль).

При формировании SQLJ-приложения среда JDeveloper автоматически вставляет в начало приложения код, выполняющий подключение необходимых библиотек.

Например:

import sqlj.runtime.*; import sqlj.runtime.ref.*; import java.sql.*; import java.sql.Date; import oracle.sql.*; import oracle.sqlj.runtime.Oracle; public class MySQLJ1 { public MySQLJ1() {} // Конструктор public static void main (String[] args) throws SQLException { } }

Для подключения к базе данных из SQLJ-приложения первоначально следует создать объект типа данного класса, зарегистрировать драйвер и установить контекст по умолчанию.

Например:

MySQLJ1 sqlapp= new MySQLJ1(); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); DefaultContext.setDefaultContext( new DefaultContext( "jdbc:oracle:thin:@db.com:1521:ORCL","scott","tiger",false)); if (DefaultContext.getDefaultContext==null){ // Ошибка подключения к базе данных) }

Для доступа к таблице базы данных следует объявить класс итератора (вставить в код класса до метода main).


Например:

#sql public iterator Tbl1Iter ( int f1, string f2, float f3);

Итераторы могут быть именованные и позиционные. SQLJ-транслятор в зависимости от типа итератора генерирует класс итератора, реализующий интерфейс sqlj.runtime.NamedIterator или sqlj.runtime.PositionedIterator. Оба этих интерфейса наследуют интерфейс ResultSetIterator, предоставляющий следующие методы:

  • getResultSet - извлечение из итератора результирующего набора;
  • next - переход к следующей строке итератора;
  • isClosed - определение, закрыт ли итератор;
  • close - закрытие итератора.


Для использования итератора следует объявить объект типа итератора, описать выполняемый итератор, а затем, используя метод next, последовательно выбирать строки результирующего набора.

Например:

Tbl1Iter t1=null; // Объект типа итератора #sql t1= { SELECT //Выполняемый итератор Fl1 as a1, Fl2 as a2, Fl3 as a3 FROM Tbl1}; while (t1.next()){ System.out.println( t1.a1()); // Вывод значения столбца // результирующего набора System.out.println( t1.a2()); System.out.println( t1.a3()); } t1.close(); // Закрытие итератора


Содержание раздела