ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Все о MySQL. Инсталляция. Продолжение.


28-12-2009

Начать демонстрацию работы интерфейса DBI можно с простого примера. Рассмотрим следующую базу данных, связывающую книги с их авторами, а также следующий сценарий Perl, подключающийся к базе данных и распечатывающий эти данные.
Инсталляция
Листинг 20.5.
#!/usr/bin/perl
# load module use DBI();
# подключиться
my $dbh = DBI->connect("DBI:mysql:database=somedb,-host = localhost", "user", "pass"),-
# выполнить запрос
my $sth = $dbh->prepare("SELECT * FROM books"); $sth->execute();
# просмотр результирующего набора
while(my $ref = $sth->fetchrow_hashref()) {
print "Название: $ref->{,title,}nАвтор: $ref->{'author'}nn";
}
# Очистка $sth->finish(); $dbh->disconnect();
Догадливые сценарии
Обычно, если MySQL уже установлен, процесс инсталляции DBI достаточно прост и прямолинеен. Как главный сценарий установки DBI, так и сценарий установки MySQL DBD, снабжены достаточным интеллектом, чтобы "догадаться" о месте размещении необходимых файлов (включая и файлы клиентских библиотек MySQL), и фактически не требуют никакой информации от вас. Однако в случае обнаружения проблем при инсталляции, обратитесь к соответствующей документации, которая имеется в обоих пакетах. Это поможет решить любую проблему. 
Инсталляция
Вывод сценария листинга 20.5 изображен на рис. 20.1.
Разобьем этот сценарий на отдельные части, чтобы понять, как Perl подключается к базе данных MySQL и производит выборку.
1. Сценарий начинается довольно просто. Как вы вероятно уже знаете, в первой строке вызывается интерпретатор Perl, а затем ему предписывается проанализировать и запустить последующие операторы.
use DBI();
- это первый из операторов. Он загружает и активизирует модуль DBI. С этого момента с DBI-интерфейсом можно работать из сценария.
2. Для того чтобы начать обмен данными с сервером базы данных MySQL, необходимо открыть соединение с сервером. Для этого у DBI имеется метод connect() :
my $dbh = DBI->connect("DBI:mysql:datebase=somedb;host=local-host", "user", "pass");
Для его запуска требуется пять аргументов: имя используемого DBD (mysql), имя узла, на котором работает сервер MySQL (localhost), имя базы данных, с которой производится соединение (somedb), имя пользователя MySQL и его пароль. Этот метод возвращает дескриптор базы данных в переменной $dbh.
Он и используется в сценарии при обмене данными с базой данных. Подробнее это описано в разделе "Управление соединением". 
После этого вызов RaiseError гарантирует, что интерфейс DBI при возникновении ошибки отработает функцию die() с соответствующим диагностическим сообщением, обозначающим причину выхода. Для такого простого сценария, каким является предыдущий сценарий, такой прием работает достаточно надежно, но в случае с более сложными сценариями можно обрабатывать ошибочные ситуации каким-либо "более интеллигентным" способом.
Метод prepare() принимает SQL-запрос в качестве параметра и подготавливает этот запрос к выполнению, при этом его не выполняя. Метод prepare() возвращает в переменной $sth готовый оператор запроса, который затем передается методу execute() , собственно, выполняющему подготовленный запрос: my $sth = $dbh->prepare("SELECT * FROM books"); $sth->execute();
Этот запрос может быть любым допустимым SQL-запросом, который может принять и обработать сервер MySQL.
Дескриптор оператора, возвращенный методом prepare() , поступает вместе с раз­личными интересными методами и свойствами. В разделе "Выполнение запросов" можно прочитать об его использовании с запросами типа "SELECT" и других типов.
3. После выполнения запроса следующим действием является обработка возвращенных данных. Существует множество методов, предназначенных для просмотра ре­зультирующего набора и различных полей, из которых он обычно состоит. В пре­дыдущем примере используется метод fetchrow_hashref() . Он позволяет вы­бирать данные через ссылки и форматировать их для дальнейшего отображения: while(my $ref = $sth->fetchrow_hashref())
{
print "Название: $ref->{^title^}nАвтор: $ref->{'author'}nn"; }
Интерфейс Perl DBI имеет и другие методы выборки данных в результирующий набор. Подробнее о них - в разделе "Обработка результирующего набора".
В случае возникновения ошибки в запросе, скажем, при ошибке в имени столбца или в ключевом слове, сервер MySQL прерывает выполнение запроса и возвращает сообщение об ошибке. Подробнее об этом можно прочитать в разделе "Обработка ошибок".
4. После того как все данные выбраны и обработаны, методы finish() и discon-nect() берут на себя заботу об отключении от базы данных (освобождении памяти и "уборке за собой"):
$sth->finish(); $dbh->disconnect();
Как будет видно из последующих примеров, эти пять описанных шагов и составляют основу процесса создания приложений, работающих с базой данных при использовании интерфейсов Perl DBI и MySQL DBD. В последующих разделах этой главы мы рассмотрим их детальнее.
RTFM
Для представления строки, которая следует за именем DBD, определенного стандарта не существует. Чтобы определиться с форматом, скорее всего, придется обратиться к документации, касающейся конкретного DBD-интерфейса.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Инсталляция Все о MySQL. Управление соединением