Примеры запроса и модификации базы данных с использованием JDBC

Сопряжение JDBC - ODBC

В качестве составной части JDBC поставляется драйвер для доступа из JDBC к источникам данных ODBC (Open Database Connectivity), и называется "программа сопряжения JDBC - ODBC". Эта программа сопряжения реализована в виде JdbcOdbc.class и является библиотекой для доступа к драйверу ODBC.

Поскольку JDBC конструктивно близок к ODBC, программа сопряжения является несложной надстройкой над JDBC. На внутреннем уровне этот драйвер отображает методы Java в вызовы ODBC и тем самым взаимодействует с любым ODBC - драйвером. Достоинство такой программы сопряжения состоит в том, что JDBC имеет доступ к любым базам данных, поскольку ODBC - драйверы распространены очень широко.

В соответствии с правилами Internet JDBC идентифицирует базу данных при помощи URL, который имеет форму:

jdbc:<субпротокол>:<имя, связанное с СУБД или Протоколом>

У баз данных в Internet/intranet "имя" может содержать сетевой URL

//<имя хоста>:<порт>/..

< субпротокол > может быть любым именем, которое понимает база данных. Имя субпротокола "odbc" зарезервированно для источников данных формата ODBC. Типичный JDBC URL для базы данных ODBC выглядит следующим образом:

jdbc:odbc:<DNS - имя ODBC>;User=<имя пользователя>; PW=<пароль>

Внутреннее устройство JDBC - приложения

Рис.20. Иерархия классов JDBC и поток API JDBC

Чтобы обработать информацию из базы данных, информационно-обучающая система на языке Java выполняет ряд шагов. На рис.20 показаны основные объекты JDBC, методы и последовательность выполнения, Во-первых, программа вызывает метод getConnection (), чтобы получить объект Connection. Затем она создает объект Statement и подготавливает оператор SQL.

Оператор SQL может быть выполнен немедленно (объект Statement), а может быть откомпилирован (объект PreparedStatement) или представлен в виде вызова процедуры (объект CallableStatement). Когда выполняется метод executeQuery(), возвращается объект ResultSet. Операторы SQL, такие как updatе или delete не возвращают ResultSet. Для таких операторов используется метод executeUpdate(). Он возвращает целое, указывающее количество рядов, затронутых оператором SQL.

ResultSet содержит ряды данных и анализируетcя методом next(). Если приложение обрабатывает транзакции, можно пользоваться методами rollback() и commit() для отмены или подтверждения изменений, внесенных оператором

SQL.

Данный пример иллюстрирует как при помощи SQL - опрератора SELECT составляется список всех студентов из базы данных. Ниже приводятся шаги, которые необходимы для выполнения этого задания при помощи API JDBC. Каждый шаг имеет форму текста на языке Java с комментариями.

// описать методы и переменные

public void ListStudents () throws SQLException

{

int i, noOfColumns;

String stNo, stFName, stLName;

// инициализировать и загрузить драйвер JDBC-ODBC

Class.forName ("jdbc.odbc.JdbcOdbcDriver");

// создать объект Connection

Connection ex1Con = DriverManager.getConnection (

"jdbc:odbc:StudentDB;uid="admin";pw="sa"");

// создать простой объект Statement

Statement ex1Stmt = ex1Con.createStatement ();

// Создать строку SQL, передать ее СУБД и

// выполнить SQL-оператор

ResultSet ex1rs = ex1Stmt.executeQuery (

"SELECT StudentNumber, FirstName, LastName FROM Students");

// Обработать каждый ряд и вывести результат на консоль

System.out.println ("Student Number First Name Last Name");

while (ex1rs.next())

{

stNo = ex1rs.getString (1);

stFName = ex1rs.getString (2);

stLName = ex1rs.getString (3);

System.out.println (stNo, stFName, stLName);

}

}

В следующем примере поле firstName таблицы Students изменяется. Доступ осуществляется через поле StudentNumber.

// описать методы, переменные и параметры

public void UpdateStudentName (String stFName, String stLName, String stNo)

throws SQLException

{

int retValue;

//инициализировать и загрузить драйвер JDBC-ODBC

Class.forName ("jdbc.odbc.JdbcOdbcDriver");

// создать объект Connection

Connection ex1Con = DriverManager.getConnection (

"jdbc:odbc:StudentDB;uid="admin";pw="sa"");

// создать простой объект Statement

Statement ex1Stmt = ex1Con.createStatement ();

// Создать строку SQL, передать ее СУБД и

// выполнить SQL-оператор

String SQLBuffer = "UPDATE Students SET FirstName =" +

stFName + ", lastName =" + stLName +

"WHERE StudentNumber = " + stNo;

retValue = ex1Stmt.executeUpdate (SQLBuffer);

System.out.println ("Модифицированно " + retValue +

" строк в базе данных.")

}

Рис.21. Интерфейс для регистрации пользователя в АИС.

Таким образом, взаимодействие с базами данных из Java также отличается простотой и гибкостью, связанной с эффективной реализацией JDBC API. В сочетании со своей природной платформо-независимостью, Java предоставляет уникальный инструмент для создания интерактивных распределенных информационно-обучающих систем на база Internet/Intranet - технологий.

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

  • отсутствие многих популярных приложений и средств разработки реализованных в виде JAVA аплетов;
  • относительное высокое время компиляции аплетов на клиентских местах (временно);
  • вопросы безопасной работы в сети.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: