Использование DBI
Вот что следует делать для использования DBI. Информацию о самом DBI можно найти в книге «Programming the Perl DBI» Аллигатора Декарта (Alligator Descartes) и Тима Банса (Tim Bunce) (O'Reilly).
Шаг 1: Загрузите нужный модуль
Здесь нет ничего особенного, нужно лишь написать:
use DBI;
Шаг 2: Соединитесь с базой данных и получите дескриптор соединения
Код на Perl, устанавливающий DBI-соединение с базой данных MySQL и возвращающий дескриптор базы данных, выглядит примерно так:
соединиться с базой данных $database используя заданное имя
Sdatabas
$dbh = DBI-->comect("D8I:nysal :Sdatabase Saseriare $pw);
die "Онибка Н-'-юзмолно соединиться:
$dbh);
До соединения с сервером DBI загрузит низкоуровневый DBD-драйвер (DBD: :^ysc:!). Перед тем как двигаться дальше, проверим, что соединение (при помощи con пес: ()) установлено. DBI предоставляет два параметра для connect () - Raise-Error и Print Er , определяющие, будет ли DBI выполнять эту проверку или сообщит об ошибках, когда они возникнут. В частности, если применить:
$dbh = DBI->connect("DBI:mysql:$database",
$username,$pw,{RaiseError =
то DBI вызовет die, при условии, что соединение с базой данных не произошло.
Шаг 3: Отправьте команды SQL-серверу
Когда модуль загружен и соединение с сервером баз данных установлено, начинается самое интересное. Пошлем серверу несколько SQL-команд. Мы будем использовать запросы, приведенные в качестве примеров из приложения D. В этих запросах для заключения в кавычки применяется оператор q (т. e. something записывается как q{something}), следовательно, не нужно беспокоиться о кавычках внутри запросов. Вот первый из двух DBI-методов, существующих для отправки команд:
$results=$dbh->do(q{UPDATE hosts
SET bldg = 'Main'
WHERE name = 'bendir'});
die "Невозможно выполнить обновление:
$DBI: :errstr\n" unless (define;; Sresults);
Переменная Sresuits равна либо количеству обновленных записей, либо uricief, если произошла ошибка. И хотя важно знать, сколько записей было обработано, такой метод абсолютно не подходит для операторов, подобных SELECT, где необходимо увидеть сами данные. Следовательно, нужно применить второй метод.