Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

1. Написание апплетов, сервлетов и приложений jdbc

Этот раздел посвящен рассмотрению пакета java.sql, отдельные части которого опираются на классы из пакета JDK. Представленные здесь сведения и примеры основаны на версии 1.1.х пакета JDK и версии 1.2х API-интерфейса Java.

Последующие разделы предназначены для демонстрации использования конкретных классов и интерфейсов JDBC. Обработка исключений в примерах, представленных в этих разделах, опущена, поскольку обработка исключений в интерфейсе JDBC описана отдельно. А пока предполагается, что каждый фрагмент кода включен в блок try.

1.1 Соединение с базой данных

Прежде чем появится возможность установить соединение с RDBMS, необходимо загрузить соответствующий драйвер JDBC. Этот драйвер можно загрузить явным образом с помощью метода forName() класса java.lang.Class. Чтобы загрузить драйвер, передайте этому методу полностью определенное составное имя класса. Например, если используется драйвер Oracle, то загрузить его можно с помощью следующего оператора (при этом пакет классов oracle должен быть установлен на компьютере в директории, доступной виртуальной машине Java для поиска классов):

Class.forName("oracle.jdbc.driver.OracleDriver"); // загрузка драйвера

Есть и другой способ загрузки драйвера. В нем вместо метода Class.forName() используется метод registerDriver() класса DriverManager:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); // загрузка драйвера

Загруженный тем или иным способом драйвер драйвер становится доступным для диспетчера драйверов, который используется для установления соединения. Соединение его устанавливается методом getConnection(). У метода getConnection() класса DriveManager имеются три формы, причем каждая форма возвращает интерфейс Connection (реализованный драйвером) и воспринимает URL (универсальный локатор ресурсов) в качестве первого аргумента формы:

jdbc:subprotocol:subname

Об использовании имени драйвера, URL и конкретной формы метода getConnection() см. документацию на соответствующий драйвер. Для большинства драйверов JDBC требуются дополнительные свойства соединения, предназначенные для определения конкретного экземпляра базы данных, к которому осуществляется доступ, обеспечения опознавания, установки параметров сеанса и т.д. Например, в большинстве драйверов Oracle требуется наличие строки подключения SQL*Net, имени пользователя и пароля. Приведем пример установки соединения с базой данных:

java.sql.Connection conn =DriverManager.getConnection

("jdbc:oracle:thin:@uran:1521:ORCL","scott","tiger");

// установка соединения

После установки соединения при помощи объекта conn класса Connection апплет, сервлет или приложение может обращаться к базе данных для выполнения того или иного запроса. После того, как соединение больше не требуется, его можно закрыть методом close() класса Connection:

conn.close(); // закрытие соединения

1.2 Применение интерфейса DatabaseMetaData

Интерфейс java.sql.DatabaseMetaData имеет неоценимое значение для тех приложений, которые должны поддерживать несколько машин баз данных или несколько версий одной и той же RDBMS. Его можно использовать для определения имени и версии драйвера, конкретной RDBMS и ее версии, поддерживаемой грамматики SQL, уровня выделения транзакций, уровней процедурной поддержки и т.д. Интерфейс DatabaseMetaData возвращается из метода getMetaData() интерфейса Connection. В приведенном ниже фрагменте кода показан один из возможных вариантов использования этого интерфейса:

java.sql.DatabaseMetadata md=conn.getMetadata(); // получение информации о соединении

String driverName=md.getDriverName();

String driverVer=md.getDriverVersion();

String dbmsName=md.getDatabaseProductName();

String dbmsVer=md.getDatabaseProductVersion();

Приложение может использовать данные о поставщике и версии DBMS для динамического создания операторов SQL в соответствии с конкретной используемой RDBMS. Например, внешние соединения в значительной степени зависят от RDBMS. В интерфейсе JDBC предусмотрены управляющие последовательности для устранения этих несогласованностей, однако, к сожалению, поддержка в драйверах этих управляющих последовательностей оказывается несогласованной. Пример синтаксиса управляющих последовательностей интерфейса JDBC представлен в разделе, посвященном доступу к процедурам и функциям. В одних случаях, возможно, потребуется применить синтаксис управляющих последовательностей, тогда как в других более надежным может оказаться создание внутри приложения операторов SQL для конкретной DBMS или драйвера. Этот выбор в значительной степени зависит от числа продуктов и версий DBMS, которые необходимо поддерживать в приложении (даже если это известно заранее).

Этот вопрос может показаться незначительным, однако влияние различий в грамматике SQL и реализациях драйверов может оказаться существенным, если оно не будет учтено при разработке приложения. Если бы это было не так, тогда многие методы интерфейса DatabaseMetaData оказались бы просто не нужны.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]