MySQL 5.0. Библиотека программиста
Шрифт:
finish
Рассмотрим работу с запросом на примере вывода списка товаров, то есть данных из таблицы Products (Товары). Создайте в папке cgi-bin корневой папки XAMPP файл input.pl, содержащий код, представленный в листинге 4.12. Листинг 4.12. Получение информации и отображение ее на странице
#!»C:\Program Files\xampp\perl\bin\perl.exe»
print «Content-type: text/html; charset=windows-1251\n\n»;
use DBI;
#Подсоединяемся к базе данных
my $dbh = DBI -> connect(«DBI:mysql:database=SalesDept;host=localhost»,
«username»,»userpassword»);
if(!$dbh)
{
print «Ошибка доступа к базе данных. Приносим свои извинения”;
die;
}
#Устанавливаем кодировку CP-1251
$dbh->do(«SET NAMES cp1251»);
#Выполняем запрос к базе
my $query = $dbh->prepare(«SELECT * FROM Products»);
my $qresult = $query -> execute;
if(!$qresult)
{
print “Ошибка доступа к базе данных. Приносим свои извинения”;
die;
}
#Создаем строку для вывода результатов запроса
my $pagecontent=””;
#Для каждой строки из результата запроса
#записываем данные в хеш и сохраняем ссылку на хеш
#в переменной $product
while(my $product = $query -> fetchrow_hashref(«NAME_uc»))
{
#Выводим элементы хеша
#с индексами DESCRIPTION, DETAILS и PRICE
$pagecontent.=»<tr><td>».$product->{DESCRIPTION}.»</td>».
«<td>».$product->{DETAILS}.»</td>».
«<td>».$product->{PRICE}.»</td></tr>\n»;
}
#Освобождаем ресурсы
$query -> finish;
#Отсоединяемся от базы данных
$dbh->disconnect;
#Выводим полученные данные
print “
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<!– Выводим заголовок списка товаров –>
<h1>Список товаров</h1>
<table>
<tr>
<th>Наименование</th>
<th>Описание</th>
<th>Цена</th>
</tr>
«.$pagecontent.»
</table>
</body>
</html>
“;Открыв в браузере страницувы увидите список товаров (рис. 4.24).
Отметим, что если в результате запроса присутствуют несколько столбцов с одинаковыми именами (это возможно в случае получения информации из нескольких таблиц), то метод fetchrow_hashref предоставляет доступ только к последнему из этих столбцов. Кроме того, порядок элементов в хеше может отличаться от порядка столбцов в таблице; в этом легко убедиться, если вывести значения всех полей с помощью цикла foreach:
while(my $product = $query->fetchrow_hashref(«NAME_uc»))
{
print «»
foreach my $field_name (keys %$product)
{
print «$product->{$field_name}\t»;
}
print “”
}Этих недостатков лишен метод fetchrow_arrayref, который работает аналогично методу fetchrow_hashref, но возвращает ссылку на массив с числовыми индексами. При использовании метода fetchrow_arrayref сценарий для вывода списка товаров будет следующим (листинг 4.13). Листинг 4.13. Получение информации и отображение ее на странице
#!»C:\Program Files\xampp\perl\bin\perl.exe»
print «Content-type: text/html; charset=windows-1251\n\n»;
use DBI;
#Подсоединяемся к базе данных
my $dbh = DBI -> connect(«DBI:mysql:database=SalesDept;host=localhost»,
«username»,»userpassword»);
if(!$dbh)
{
print «Ошибка доступа к базе данных. Приносим свои извинения”;
die;
}
#Устанавливаем кодировку CP-1251
$dbh->do(«SET NAMES cp1251»);
#Выполняем запрос к базе данных
my $query = $dbh->prepare(«SELECT * FROM Products»);
my $qresult = $query -> execute;
if(!$qresult)
{
print “Ошибка доступа к базе данных. Приносим свои извинения”;
die;
}
#Создаем строку для вывода результатов запроса
my $pagecontent=””;
#Для каждой строки из результата запроса
#записываем данные в массив и сохраняем ссылку на массив
#в переменной $product
while(my $product = $query -> fetchrow_arrayref)
{
#Выводим элементы массива с номерами 1, 2, 3
$pagecontent.=»<tr><td>».$product->[1].»</td>».
«<td>».$product->[2].»</td>».
«<td>».$product->[3].»</td></tr>\n»;
}
#Освобождаем ресурсы
$query -> finish;
#Отсоединяемся от базы данных
$dbh->disconnect;
#Выводим полученные данные
print “
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<!– Выводим заголовок списка товаров –>
<h1>Список товаров</h1>
<table>
<tr>
<th>Наименование</th>
<th>Описание</th>
<th>Цена</th>
</tr>
«.$pagecontent.»
</table>
</body>
</html>
“;Итак, вы узнали, как создать сценарий Perl, запрашивающий информацию из базы данных. Теперь кратко обобщим основные сведения, изложенные в этом разделе.
Итоги
В данном разделе вы изучили функции языка Perl, позволяющие выполнять все необходимые операции с базой данных MySQL:
• подключение к базе данных и отключение от нее;
• выполнение SQL-команд как получающих информацию из базы данных (методы prepare и execute), так и не получающих ее (метод do);
• обработка ошибок.
Ознакомиться с полным списком функций модуля Perl DBI вы можете, перейдя по страницена ссылку Manual pages.
В следующем разделе вы узнаете о том, как взаимодействуют с базой данных веб-приложения на языке Java.
4.3. Интерфейс с Java
В этом разделе рассмотрим разработку Java-сервлетов, использующих базу данных MySQL для хранения и поиска информации. Вы узнаете, как создать и настроить среду разработки сервлетов, а также научитесь использовать для взаимодействия с MySQL функции JDBC (Java Database Connectivity – интерфейс доступа к базам данных из приложений Java).
В первую очередь вы узнаете, какое программное обеспечение потребуется для создания сервлетов.
Среда разработки сервлетов
Для создания сервлетов необходимы следующие программы:
• Java Development Kit (JDK) – пакет поддержки разработок в среде Java;
• дополнительная библиотека servlet-api.jar (или servlet.jar), необходимая для компиляции сервлетов, но не входящая в состав Java Development Kit;
• контейнер сервлетов – программа, обеспечивающая загрузку и выполнение сервлетов;
• программа, выполняющая функции веб-сервера.
Широко известным контейнером сервлетов является Tomcat – свободно распространяемая программа с открытым кодом. Tomcat может выполнять функции веб-сервера либо использоваться совместно с веб-сервером Apache. В состав Tomcat входит и библиотека servlet-api.jar.
Кроме того, чтобы сервлеты могли взаимодействовать с базой данных, необходимо установить и подключить JDBC-драйвер. В качестве такого драйвера был выбран MySQL Connector/J.
Итак, наша среда разработки будет состоять из Java Development Kit, Tomcat и MySQL Connector/J. В следующем подразделе вы узнаете, как установить и настроить эти компоненты.
Подготовка к работе
В данном подразделе мы рассмотрим создание среды разработки сервлетов. Вначале мы загрузим и установим компоненты среды, затем выполним несколько несложных настроек.
Установка Java Development Kit
Для установки Java Development Kit выполните следующие действия.
1. Чтобы скачать дистрибутив JDK с сайта компании-разработчика, откройте вебстраницуи в разделе JDK 6 Update X щелкните на кнопке Download (Скачать).
2. На открывшейся веб-странице выберите вариант дистрибутива (рис. 4.25):
• если вы работаете в 32-разрядной операционной системе (Windows Vista/ Server 2003/XP/Millennium Edition/2000/98/95), то в поле Plaltform (Платформа) выберите из списка значение Windows;
• если вы работаете в 64-разрядной операционной системе (Windows Vista x64/Server 2003 x64/XP x64), то в поле Plaltform (Платформа) выберите из списка значение Windows x64.
3. Установите флажок I agree to the Java SE Development Kit 6 License Agreement (Я согласен с условиями лицензионного соглашения) и нажмите кнопку Continue (Продолжить).
Рис. 4.25. Выбор варианта дистрибутива
4. На следующей странице щелкните на ссылке, соответствующей загружаемому файлу инсталлятора.
5. После загрузки файла запустите его, дважды щелкнув на его значке.
6. В окне License Agreement (Лицензионное соглашение) (рис. 4.26) для принятия условий лицензионного соглашения нажмите кнопку Accept (Принять).
В окне Custom Setup (Выборочная установка) (рис. 4.27) нажмите кнопку Change (Изменить), чтобы указать корневую папку Java.
В появившемся окне (рис. 4.28) в поле Folder name (Имя папки) введите путь к папке либо в поле Look in (Смотреть в) выберите из списка нужный диск, а затем последовательно раскройте вложенные папки, пока не дойдете до нужной.