Сопряжение 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 – приложения

 


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

 

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

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

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

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

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

 

// описать методы и переменныеpublic void ListStudents () throws SQLException{int i, noOfColumns;String stNo, stFName, stLName;// инициализировать и загрузить драйвер JDBC-ODBCClass.forName ("jdbc.odbc.JdbcOdbcDriver");// создать объект ConnectionConnection ex1Con = DriverManager.getConnection ("jdbc:odbc:StudentDB;uid="admin";pw="sa"");// создать простой объект StatementStatement 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-ODBCClass.forName ("jdbc.odbc.JdbcOdbcDriver");// создать объект ConnectionConnection ex1Con = DriverManager.getConnection ("jdbc:odbc:StudentDB;uid="admin";pw="sa"");// создать простой объект StatementStatement 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 +" строк в базе данных.")}

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

 

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

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

· отсутствие многих популярных приложений и средств разработки реализованных в виде JAVA аплетов;

· относительное высокое время компиляции аплетов на клиентских местах (временно);

· вопросы безопасной работы в сети.





Список литературы

1. Попов И.Г., Мамонов С.Г. Информационные системы. М.: Инфра, 2007.

2. Абросимов А.Г. Бородинова М.А. Теория экономических информационных систем. Учебное пособие - Самара. Изд-во Самарск.гос. экон. акад., 2007.

3. Информационные системы. Учебник /Петров В.Н. – СПб.: Питер, 2008.

4. Информационное обеспечение систем управления. Учебное пособие/Голенищев Э.П., Клименко И.В. - Ростов н/Д: Феникс, 2009.

5. Интеллектуальные информационные системы в экономике. Учебное пособие/Тельнов Ю.Ф. Издание третье, расширенное и доработанное. Серия «Экономика и бизнес». – Москва.: СИНТЕГ, 2009.

 


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



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