Справочное руководство по MySQL версии 4.1.1-alpha


8.2.2 Интерфейс DBI - часть 3


Данный пример считает настройки из группы [client] файла `~/.my.cnf'. Чтобы выполнить те же действия, но с настройками, взятыми из группы [perl], нужно использовать следующую форму записи:

$dbh = DBI -> connect("DBI:mysql:$database", ";mysql_read_default_file=$ENV{HOME}/.my.cnf" . ";mysql_read_default_group=perl", $user, $password);

disconnect

Метод disconnect разрывает соединение с базой данных. Это стоит делать перед выходом из программы. Пример:

$rc = $dbh->disconnect;

prepare($statement)

Подготавливает SQL-запрос $statement к исполнению сервером. Возвращает дескриптор выражения ($sth), который затем используется для вызова метода execute. Обычно работа с запросами типа SELECT (так же, как и аналогичными, такими как SHOW, DESCRIBE, EXPLAIN) сводится к вызову методов prepare и execute. Пример:

$sth = $dbh -> prepare($statement) or die "Не могу подготовить $statement: $dbh -> errstr\n";

Если вы хотите считывать большие результаты вашим клиентом, вы можете указать использование mysql_use_result() в Perl:

my $sth = $dbh->prepare($statement { "mysql_use_result" => 1});

execute

Метод execute выполняет приготовленный запрос. Если запрос не SELECT, метод возвращает количество строк, которые были подверглись воздействию запроса. Если таковых нет, execute возвращает "0E0", что Perl интерпретирует как нуль, но воспринимает как значение ``истина'' (true). Если возникает ошибка, execute возвращает undef. Для запросов SELECT метод только инициирует выполнение запроса SQL-сервером и для получения данных необходимо использовать один из методов fetch_*. Пример:

$rv = $sth -> execute or die "Не могу выполнить: $sth -> errstr";

do($statement)

Метод do готовит SQL-запрос к выполнению, выполняет его и возвращает количество строк, подвергшихся воздействию. Если нет ни одной такой строки, как результат возвращается значение "0E0", что Perl интерпретирует как нуль, но воспринимает как значение ``истина'' (true).. Этот метод обычно используется для выражений, не являющихся операторами SELECT, которые не могут быть подготовлены заранее (из-за ограничений драйвера) или же выполняются только один раз (операции вставки, удаления и т.д.). Например:




- Начало -  - Назад -  - Вперед -