MySQL. Библиотека профессионала - Аткинсон Л
..pdf
382 Глава
Использование библиотеки языка С
rows 
Удаление таблицы.
Запрос завершился
"Could not drop
* * Закрытие 
Программа, представленная в листинге
создает таблицу и добавляет в нее за писи. Далее происходит удаление части записей, обновление записи и, наконец, уда ление всей таблицы. Обратите внимание на способ вставки записей. В цикле
бла годаря функции 
происходит повторное использование одной и той же инструкции INSERT, в которую подставляются разные параметры. Эта простая
дика не так эффективна, как подготовка одной инструкции INSERT, вставляющей группу записей. Но представьте себе программу, принимающую произвольные 
запросы на добавление, обновление и удаление записей. Тогда такая ме тодика окажется весьма удобной.
(Java Database Connectivity) — это стандартный интерфейс Java, предназна ченный для взаимодействия с базами данных. Он поддерживает работу как с реля ционными базами данных, так и с простыми табличными данными, например с текстовыми файлами, поля которых разделены символами табуляции. Интерфей сом JDBC пользуются как прикладные программисты, так и разработчики драйверов баз данных. Существует несколько
для MySQL. Новейшие их версии
доступныпоадресуhttp://mmmysql.sourceforge.net.
В этой главе предполагается, что читатели знакомы с языком Java и умеют компи лировать
Каждый работает в той среде, которая ему нравится. Для простоты я воспользовался утилитами компании Sun, установив их в Windows.
Подготовка программы
Интерфейс JDBC является частью пакета Java 2 SDK. Чтобы иметь возможность подключаться к серверу MySQL, необходимо добавить каталог драйвера MySQL в спи сок путевых имен классов. Я инсталлировал драйвер MM.MySQL в каталог
В результате был создан подкаталог 
2с. Затем я расширил список путевых имен классов, чтобы он выглядел следующим образом:

С 
3
С 
3
2С
Обратите внимание на формат имен 8.3, свойственный Windows.
Библиотека функцийJDBC инкапсулирована в пакете |
поэтому программа |
|
должна импортировать все его классы |
Сам драйвер неимпортируется. |
|
Он загружается на этапе выполнения программы с помощью метода |
||
Имя драйвера MM.MySQLвыглядит так: |
|
Driver. Этот класс, как и |
все драйверыJDBC, реализует интерфейс j |
Driver. |
|
386
После загрузки драйвера воспользуйтесь услугами менеджера драйверов для уста новления соединения с сервером. Для этого нужно сформировать URL адрес соеди нения. Формат адреса таков:

[узел]
В табл. 17.1 приведен список параметров, которые можно указывать в строке под ключения.
Параметр |
Описание |
|
Если равен True, драйвер будет повторно подключаться к |
|
серверу в случае потери связи с ним; по умолчаниюравен |
|
False |
|
Если параметр равен True, то данный пара |
|
метр задает используемый набор символов |
|
Задает интервал времени в секундах между попытками |
|
подключения к серверу (по умолчанию — 2 секунды) |
|
Задает максимальное число повторных попыток |
|
чения ксерверу (по умолчанию — 3) |
|
Задает максимальное число записей, которое |
|
получено в ответ на запрос; по умолчанию равен нулю, |
|
т.е. ограничение отсутствует |
password |
Задает пароль для подключения |
|
Задает имя пользователя |
useUnicode |
Если равен True, драйвер будет кодировать строки по |
|
стандарту Unicode; по умолчанию равен |
Врамках сеанса можно посылать произвольное число инструкций. Чтобы закрыть соединение,вызовитеметод 

Влистинге 17.1 показана минимальная Java программа, которая подключается к серверу и тут же отключается.
import 
public class
public static void
Извлечение данных 387
Загрузка try
catch (Exception
try
Подключение к базе данных.
Connection с
Закрытие
catch
e)
Извлечение данных
Прежде чем посылать запросы базе данных, необходимо создать объект класса Statement.
можно многократно использовать в запросах. В классе Statement есть три метода выпол нения запросов: 


и execute Update
Каждый из них в качестве аргумента принимает текст запроса. Метод executeQuery
возвращает объект класса
содержащий
щий набор записей. Метод 
возвращает число записей, участво вавших в запросе (это особенно удобно для инструкций INSERT и UPDATE). Метод execute
возвращает 1 в случае инструкции SELECT и число записей для остальных запросов.
удобно использовать тогда, когда тип выполняемого запроса неизвес тен заранее. В случае необходимости результирующий набор записей можно будет получить с помощью метода 

Объект класса ResultSet хранит указатель на текущую запись результирующего на бора. Для получения первой записи необходимо вызвать метод next
Этот метод удобно использовать в качестве условия цикла, так как по достижении конца набора он возвращает NULL. После извлечения записи можно определить значения ее полей с
мощью одного из методов семейства
Полное имя метода соответствует типу возвращаемого значения. Например, метод
возвращает числовое представ ление ячейки, а метод 
возвращает объект класса Date. Можно вызывать любой метод —драйвер самостоятельновыполнит необходимое преобразование.
В методах семейства
столбцы задаются по имени или по номеру. В
нумерация столбцов начинается с единицы. Если столбцы адресуются по имени, не
388 Глава 17. 
обходимо, чтобы результирующий набор записей содержал различающиеся имена столбцов. Для устранения неоднозначностей пользуйтесь псевдонимами столбцов.
В листинге 17.2 показана простая программа, которая извлекает данные из табли цы user. Обратите внимание на то, что программа пытается подключиться к серверу от имени пользователя root с явно неправильным паролем. Если будете эксперимен тировать с этой программой, подставьте корректные значения имени пользователя и пароля.
import 
public class
public static void
Загрузка драйвера. try
catch (Exception
try
Подключение к базе данных.
Connection с
Создание
Statement
Выполнение запроса.
"SELECT User, Host FROM user ORDER BY
Получение метаданных.
Вывод результатов запроса. while 
Перебор всех столбцов. |
|
for(int |
i++) |
Изменение данных 391
close 

Закрытие
catch

Удаление
В этот класс входят методы, позволяющие определять количество столбцов, их имена, размерности ит.д.
который возвращает число записей, участвовав ших в запросе. Если ни одна запись не была изменена, возвращается нуль.
обозначает параметр, подставляемый драйвером перед выполнением запроса. Есть группа методов семейства
по зволяющих присваивать значения параметрам по номерам. Первый параметр имеет номер 1. Благодаря этому нет необходимости использовать различные управляющие
то перед отправкой запроса серверу драйвер сохранит на диске образ объекта.

Загрузка драйвера.
Создание инструкции.


rows 



rows 
Удаление 