Смекни!
smekni.com

Работа с базами данных (стр. 2 из 3)

3. CallableStatement – создается методом prepareCall. Объекты CallableStatement используются для выполнения т.н. хранимых процедур – именованных групп SQL‑запросов, наподобие вызова подпрограммы. Объект CallableStatement наследует методы обработки входных (IN) параметров из PreparedStatement, а также добавляет методы для обработки выходных (OUT) и входных-выходных (INOUT) параметров.

Statement предоставляет три различных метода выполнения SQL‑выражений: executeQuery, executeUpdate и execute, в зависимости от SQL‑запроса.

Метод executeQuery необходим для запросов, результатом которых является один единственный набор значений, таких как запросов SELECT.

Метод executeUpdate используется для выполнения операторов INSERT, UPDATE или DELETE, а также для операторов DDL (DataDefinitionLanguage– язык определения данных), например, CREATETABLE и DROPTABLE. Результатом оператора INSERT, UPDATE, или DELETE является модификация одной или более колонок в нуле или более строках таблицы. Метод executeUpdate возвращает целое число, показывающее, сколько строк было модифицировано. Для выражений типа CREATE TABLE и DROP TABLE, которые не оперируют над строками, возвращаемое методом executeUpdate значение всегда равно нулю.

Метод execute используется, когда операторы SQL возвращают более одного набора данных, более одного счетчика обновлений или и то, и другое. Такая возможность редко используется.

6.2.2 Закрытие объектов Statement

Объекты Statement закрываются автоматически с помощью сборщика мусора виртуальной машины Java. Тем не менее рекомендуется закрывать их явно после того, как в них отпадает необходимость. Закрытие объектов Statement сразу же освобождает ресурсы СУБД и позволяет избежать проблем с памятью.

6.2.3 Подстановочный (escape) синтаксис SQL в объектах Statement

Объекты Statement могут содержать SQL‑выражения с т.н. escape‑синтаксисом – синтаксисом подстановки. Escape‑конструкция сигнализирует драйверу о том, что код внутри нее должен обрабатываться особо. Драйвер сканирует выражение и находит escape‑последовательности, которые затем заменяются кодом, специфичным для данной СУБД. Escape‑синтаксис независим от СУБД и позволяет программисту использовать возможности СУБД, которые иначе никак не доступны.

Escape‑конструкция заключается в фигурные скобки и ключевое слово:

6.3 Класс CallableStatement

Объект CallableStatement предоставляет унифицированный способ вызова хранимых процедур в любой СУБД. Вызов процедуры осуществляется с помощью escape‑синтаксиса в одной из двух форм: с результирующим параметром и без него. Результирующий параметр – это один из типов выходных (OUT) параметров, являющийся возвращаемым значением хранимой процедуры. Подробное описание работы с хранимыми процедурами см. в JDK.

6.4 ResultSet

6.4.1 Обзор

ResultSet содержит все строки, удовлетворяющие условиям в SQL‑выражении и предоставляет доступ к данным в этих строках посредством набора get‑методов, которые организуют доступ к колонкам текущей строки. Метод ResultSet.next используется для перемещения к следующей строке ResultSet, делая ее текущей.

Следующий фрагмент кода демонстрирует выполнение SQL‑запроса, который возвращает коллекцию строк, в которой колонка 1 – это int, колонка 2 – String и колонка 3 – массив байтов:

java.sql. Statement stmt = conn.createStatement();ResultSet r = stmt.executeQuery («SELECT a, b, c FROM Table1»);while (r.next()){ // Напечатать значения в текущей строке.int i = r.getInt («a»);String s = r.getString («b»);float f = r.getFloat («c»);System.out.println («ROW =» + i + «» + s +» " + f);}

6.4.2 Строки и курсоры

ResultSet содержит т.н. курсор, который указывает на текущую строку данных. Каждый раз, когда выполняется метод next, курсор перемещается на одну строку вниз. Изначально курсор спозиционирован перед первой строкой, и первый вызов next премещает его на первую строку (она становится текущей). С каждым успешным вызовом next курсор перемещается вниз на одну строку, начиная с самой верхней в ResultSet.

6.4.3 Колонки

Методы getXXX предоставляют доступ к значениям в колонках в текущей строке. В пределах одной строки значения могут быть считаны в любом порядке, но ради обеспечения большей совместимости рекомендуется считывать их подряд слева направо и делать это только один раз.

Для указания колонки можно использовать либо ее имя, либо ее номер. Например, если вторая колонка объекта ResultSetrs называется «title» и хранит строковое значение, то извлечь его можно одним из двух способов:

String s = rs.getString («title»);String s = rs.getString(2);

Колонки нумеруются слева направо, начиная с 1. Имена колонок в вызове методов getXXX нечувствительны к регистру букв. Вариант с использованием имен колонок существует для того, чтобы пользователь задавал методам getXXX те же имена колонок, что он использует в запросе. Если выражение select не указывает имена колонок (например «select * from table1» или в случаях, когда колонка вычисляется) должны использоваться номера колонок. В этих случаях пользователь не может знать наверняка имена колонок.

Информацию о колонках в ResultSet можно получить с помощтю вызова ResultSet.getMetaData. Возвращаемый объект ResultSetMetaData содержит информацию о количестве, типах и свойствах колонок объекта ResultSet.

Если известно имя колонки, но не ее индекс, то для поиска номера колонки можно использовать метод findColumn.

6.4.4 Типы данных и их преобразование

Методы getXXX пытаются конвертировать низкоуровневые данные в типы данных языка Java. Например, метод если метод getXXX – это getString и тип данных в БД – VARCHAR, драйвер JDBC конвертирует VARCHAR в объект String. Возвращаемым из метода getString значением будет Java‑объект String.

7. Приложение 4. mySQL

Все следующие примеры даны для СУБД MySQL4.0.12 и драйвер MySQLODBC 3.51, для работы через ODBC API.

7.1 Установка ODBC‑драйвера для работы с mySql

MySQLAB распространяет все свои программы под General Public License (GPL). Самую свежую версию MyODBC 3.51 (двоичные коды и исходные тексты) можно скачать с http://www.mysql.com/. Подробно о MySQLODBC рассказано на http://www.mysql.com/downloads/api-myodbc.html.

После устновки MySQLследует установить драйвер MySQLODBC 3.51.

Для установки MyODBC на Windows Вы должны скачать соответствующий дистрибутивный файл для Вашей операционной системы с http://www.mysql.com/downloads/api-myodbc.html, распаковать его и выполнить файл SETUP.EXE.


8. Приложение 3. Источник данных

8.1 DSN

После установки MySql, MySQLODBC 3.51 и создания базы данных следует создать источник данных.

Источник данных идентифицирует путь для данных, который может включать сетевую библиотеку, сервер, базу данных и другие атрибуты. В нашем случае источник данных представляет собой путь к базе данных MySQL. Чтобы соединиться с источником данных, Driver Manager проверяет системный реестр Windows для получения специфической информации подключения.ODBC Driver Manager и MyODBC Drivers использует раздел системного реестра, созданный ODBC Data Source Administrator. Этот раздел содержит информацию относительно каждого источника данных и связанного с ним драйвера. Прежде, чем Вы сможете соединяться с источником данных, информация о подключении должна быть добавлена к системному реестру.

8.2 Настройка MyODBC DSN

Чтобы добавлять и конфигурировать источники данных, используйте ODBC Data Source Administrator. ODBC Administrator модифицирует информацию о подключениях к источникам данных. Поскольку Вы добавляете источники данных, ODBC Administrator модифицирует информацию системного реестра для них.

ЧтобыоткрытьODBC Administratorиз Control Panel:

· НажмитеStart, укажитенаSettingsищелкнитеControl Panel.

· Насистемахпод Microsoft Windows 2000 дваждыщелкнитепоAdministrative Tools, азатемдваждыщелкнитепоData Sources (ODBC). На компьютерах под предыдущими версиями Microsoft Windows дважды щелкните по 32‑bit ODBC или по ODBC.

Чтобы добавить источник данных в Windows:

1. ОткройтеODBC Data Source Administrator.

2. ВдиалоговомокнеODBC Data Source AdministratorнажмитеAdd. ОткроетсядиалоговоеокноCreate New Data Source.

3. Выберите там MySQLODBC 3.51 Driver и нажмите на Finish. Появится диалоговое окно MySQLODBC 3.51 Driver– DSNConfiguration.

4. В окне Data Source Name впечатайте имя источника данных, к которому Вы хотите обращаться. Это может быть любое имеющее силу имя, которое понравилось.

5. В окне Description введите описание необходимое для DSN.

6. В окне Host or Server Name (or IP) напечатайте имя сервера MySQL, к которому Вы хотите обращаться. По умолчанию это local host.

7. В окне Database Name укажите имя MySQLбазы данных, которая будет применяться как заданная по умолчанию база данных.

8. В окне User задайте имя пользователя базы данных (user ID).

9. В окне Password надо задать пароль.

10. В окне Port напечатайте номер порта, если это не значение по умолчанию 3306.

11. В окне SQL Command Вы можете вводить факультативную команду SQL, которую серверу надлежит выполнить сразу после установления подключения.

Теперь нажмите OK, чтобы добавить этот источник данных. Обратите внимание: при щелчке на OK диалоговое окно Data Sources dialog, и ODBC Administrator модифицирует информацию системного реестра. Имя пользователя и строка подключения станут заданными по умолчанию значениями подключения для этого источника данных. Вы можете также проверить, достаточны ли Ваши параметры настройки, чтобы соединиться с сервером, используя кнопку Test Data Source.

Чтобы изменить источник данных в Windows:

1. ОткройтеокноODBC Data Source Administrator.Выберите соответствующую вкладку DSN.

2. Выберите источник данных MySQL, который Вы хотите изменить, а затем нажмите modify и щелкните по Configure. Откроется диалоговое окно MySQLODBC 3.51 Driver – DSN Configuration.

3. Измените соответствующие поля источника данных, а затем нажмите OK.

По умолчанию после установки драйвера MyODBC 3.51 в системе создается UserDSN с именем myodbc3‑test, который можно использовать, не создавая своих источников данных.