на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Работа с базами данных

Работа с базами данных

13

Факультет «Информатика и системы управления»

Методические указания к лабораторной работе

по курсу «Распределенные системы обработки информации»

"Работа с базами данных"

Москва 2004 г.

Оглавление

  • Цель работы 4
  • 1. Задание для домашней подготовки 5
  • 2. Задание к лабораторной работе 6
  • 3. Содержание отчета 7
  • 4. Контрольные вопросы. 8
  • 5. Литература. 9
  • 6. Приложение 1. Описание JDBC 10
    • 6.1 Класс Connection 11
      • 6.1.1 Открытие соединения 11
      • 6.1.2 JDBC URL 12
    • 6.2 Класс Statement 13
      • 6.2.1 Выполнение запроса 13
      • 6.2.2 Закрытие объектов Statement 15
      • 6.2.3 Подстановочный (ecape) синтаксис SQL в объектах Statement 15
    • 6.3 Класс CallableStatement 15
    • 6.4 ResultSet 16
      • 6.4.1 Обзор 16
      • 6.4.2 Строки и курсоры 16
      • 6.4.3 Колонки 17
      • 6.4.4 Типы данных и их преобразование 17
  • 7. Приложение 4. mySQL 19
    • 7.1 Установка ODBC_драйвера для работы с mySql 19
  • 8. Приложение 3. Источник данных 20
    • 8.1 DSN 20
    • 8.2 Настройка MyODBC DSN 20
  • 9. Приложение 4. Пример программы 23
  • 10. Приложение 5. Компонент JTable 28
    • 10.1 TableModel 28
    • 10.2 Класс JTable 30

Цель работы

1. Познакомиться с JDBC (Java DataBase Connectivity) 2.0 API.

2. Освоить классы Connection, DatabaseMetaData, Statement, ResultSet пакета java.sql.

3. Осовоить класс JTable из пакета javax.swing.

4. Применить полученные знания на практике

1. Задание для домашней подготовки

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

2. Задание к лабораторной работе

Разработать оконное приложение, в котором будет отображаться информация из базы данных. Помимо отображения информации из БД, оно должно позволять добавлять или/и удалять записи. Данные представить в виде таблиц (использовать компонент JTable).

Сложность БД - неограниченная. Минимум - она должна содержать хотя бы одну таблицу.

СУБД выбирается студентом самостоятельно.

3. Содержание отчета

Отчет должен содержать:

Постановку задачи, решаемой отлаженной программой.

Руководство пользователя отлаженной программы, содержащее описание интерфейсов всех функций программы.

Листинг программы с необходимыми комментариями.

4. Контрольные вопросы

1. Что такое JDBC?

2. Как осуществляется соединение?

3. Что передается в стороке URL?

4. Что делает класс Statement?

5. Какие есть типы запросов и классы для их выполнения?

6. Для чего нужен класс ResultSet?

7. Как извлекаются данные из ResultSet?

8. Как связаны табличная модель (Table Model) и класс JTable?

5. Литература

1. Кен Арнольд, Джеймс Гослинг, Дэвид Холмс. Язык программирования Java™.

2. Официальный сайт Java - http://java.sun.com/ (есть раздел на русском языке с учебником).

3. Java™ 2 SDK, Standard Edition Documentation - http://java.sun.com/products/jdk/1.5/index.html.

4. Джеймс Гослинг, Билл Джой, Гай Стил. Спецификация языка Java (The Java Language Specification - http://www.javasoft.com/docs/books/jls/). Перевод на русский язык - http://www.uni-vologda.ac.ru/java/jls/index.html

5. Официальный сайт проекта Eclipse - http://www.eclipse.org/.

6. www.citforum.ru

6. Приложение 1. Описание JDBC

JDBC - это пакет, обеспечивающий API для единообразного доступа к различным источникам данных на основе языка баз данных SQL.

Подразумевается, что одна и та же Java_программа сумеет с помощью JDBC реально работать в среде Windows с данными MySQL или же в среде Solaris с данными Informix. Она же может быть хранимой процедурой в БД под Oracle и работать с данными той же Oracle или, к примеру, Sybase.

Реализуется JDBC в виде интерфейсов java.sql (основной) и javax.sql (расширенный). Конкретный набор классов, реализующий JDBC_интерфейс и осуществляющий доступ к конкретной СУБД, называется драйвером.

JDBC позволяет:

· Установить соединение с источником данных

· Посылать ему SQL_запросы

· Обрабатывать результаты.

В следующем фрагмента кода это продемонстрировано.

 // Устанавливаем соединение

Connection con = DriverManager.getConnection (

«jdbc:odbc:wombat», «login», «password»);

Statement stmt = con.createStatement();

 // Выполняем запрос

ResultSet rs = stmt.executeQuery (

«SELECT a, b, c FROM Table1»);

while (rs.next())

{

int x = getInt («a»); // получаем результат

String s = getString («b»);

float f = getFloat («c»);

}

6.1 Класс Connection

Объект Connection представляет собой соединение с БД. Сессия соединения включает в себя выполняемые SQL_запросы и возвращаемые через соединение результаты. Приложение может открыть одно или более соединений с одной или несколькими БД.

6.1.1 Открытие соединения

Стандартный способ получения соединения - это вызов метода DriverManager.getConnection. Этому методу передается строка, содержащая т.н. «URL». Класс DriverManager, представляющий собой уровень управления в JDBC, пытается найти драйвер, который может соединиться к БД с помощью данного URL. Класс DriverManager содержит список зарегистрированных классов Driver, и при вызове метода getConnection он проверяет каждый драйвер и ищет среди них тот, который может соединиться с БД, указанной в URL. Метод connect драйвера использует этот URL для установления соединения.

Пользователь может пропустить этот управляющий уровень JDBC и вызывать непосредственно методы класса Driver для открытия соединения. Это может быть нужным в тех редких случаях, когда два или более драйвера могут обслужить заданный URL, но пользователь хочет выбрать конкретный из них. Тем не менее, намного проще возложить эту работу на класс DriverManager.

Следующий код демонстрирует открытие соединения с БД, находящейся по URL «jdbc:odbc:wombat», с именем пользователя «oboy» и паролем «12Java»:

String url = «jdbc:odbc:wombat»;

Connection con =

DriverManager.getConnection (url, «oboy», «12Java»);

6.1.2 JDBC URL

URL (Uniform Resource Locator) представляет собой информацию для адресации ресурса в Интернет. Другими словами, это адрес ресурса. Первая часть URL задает протокол, используемый для доступа к информации, и всегда заканчивается знаком»:». Остальная часть URL, - то, что после первого двоеточия, - это то место, где находится источник данных. В случае протокола «file» оставшаяся часть URL - это путь к файлу. Для протоколов ftp и http оставшаяся часть URL идентифицирует хост и необязательный путь к конкретном сайту или файлу.

JDBC-URL предоставляет способ указания БД и определенного драйвера, который устанавливает соединение с данной БД. Стандартный синтаксис JDBC URL показан ниже. Он имеет три части, разделенных двоеточием:

jdbc:<subprotocol>:<subname>

1. jdbc - протокол, используемый в JDBC URL - всегда jdbc.

2. <subprotocol> (подпротокол) - это имя драйвера или некоего механизма установления соединения с базой данных, например, ODBC. В случае применения ODBC, в URL_строку подставляется именно эта аббревиатура, а в качестве <subname> используется обычный DSN (Data Source Name), т.е. имя ODBC_источника из ODBC.INI файла. Например:

3. <subname> (подимя) - это идентификатор БД. Значение подимени может менятся в зависимости от подпротокола, и может также иметь подподимя с синтаксисом, определяемым разработчиком драйвера. Назначение подимени - это предоставление всей информации, необходимой для поиска БД. Удаленная БД требует дополнительную информацию. Например, если БД находится в Интернет, то в состав подимени JDBC-URL должен быть включен сетевой адрес, подчиняющийся следующим соглашениям:

 //hostname:port/subsubname

Предполагая, что «dbnet» - это протокол соединения к хосту в Интернет, JDBC-URL может выглядеть так:

jdbc:dbnet://ultra1:1789/state

Часть URL //ultra1:1789/state представляет собой и описывает имя хоста, порт и соответствующий идентификатор для доступа к соответствующей базе данных.

Примеры корректных JDBC-URL для подпротокола odbc:

jdbc:odbc:qeor7

jdbc:odbc:wombat

jdbc:odbc:wombat; CacheSize=20; ExtensionCase=LOWER

jdbc:odbc:qeora; UID=kgh; PWD=fooey

6.2 Класс Statement

6.2.1 Выполнение запроса

После того как установлено соединение, оно используется для выполнения SQL
_запросов к БД. JDBC не ограничивает синтаксис SQL_запросов, предоставляя, таким образом, большую гибкость в использовании специфичных для СУБД запросов или даже вообще не-SQL запросов.

В JDBC есть три класса для посылки SQL_запросов в БД и три метода в интерфейсе Connection создают экземпляры этих классов. Эти классы и методы, которые их создают, перечислены ниже:

1. Statement - создается методом createStatement. Объект Statement используется при простых SQL_запросах.

2. PreparedStatement - создается методом prepareStatement. Объект PreparedStatement используется в SQL_запросах с одним или более входными параметрами (IN parameters). PreparedStatement содержит группу методов, устанавливающих значения входных параметров, которые отсылаются в БД при выполнении запроса. Экземпляры класса PreparedStatement расширяют (наследуются от) Statement и, таким образом, включают методы Statement. Объект PreparedStatement потенциально может быть более эффективным, чем Statement, так как он прекомпилируется и сохраняется для будущего использования.

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

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

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

Метод executeUpdate используется для выполнения операторов INSERT, UPDATE или DELETE, а также для операторов DDL (Data Definition Language - язык определения данных), например, CREATE TABLE и DROP TABLE. Результатом оператора 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, делая ее текущей.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.