Perl DBI - интерфейс для доступа к базам данных

DBI является модулем доступа к базам данных для языка программирования Perl. В нем определен ряд методов, переменных и соглашений, составляющих единообразный интерфейс баз данных, не зависящий от конкретной используемой базы данных. Важно помнить, что DBI представляет собой просто интерфейс, нечто вроде прослойки «клея» между приложением и одним или несколькими модулями драйверов баз данных. Самую большую часть работы выполняют именно драйверы. DBI предоставляет стандартный интерфейс и структуру, в рамках которой действуют драйверы.

Пример использования:

#!/usr/bin/perl

use DBI;

$dbh = DBI ->connect("DBI:mysql:db_name", "db_user","db_password") or die "Error connect";

$rv = $dbh->do("UPDATE table SET foo = foo + 1");

$sth = $dbh->prepare("SELECT * FROM table WHERE foo='val'");
$rv = $sth->execute;
@row = $sth->fetchrow_array;
$rc = $sth->finish;

$rc = $dbh->disconnect;

Основные методы:

$dbh = DBI->connect($data_source, $username, $password, %attr);

$rv =$dbh->do($statement);

$sth = $dbh->prepare($statement);

$sth = $dbh->prepare__cached($statement);

$rv = $sth->execute;

$hash_ref = $sth->fetchrow_hashref;

$ary_ref = $sth->fetchall_hashref;

$sql = $dbh->quote($string);

$rc = $dbh->disconnect;

Описание основных методов:

$dbh = DBI->connect($data_source, $username, $password, %attr);

Устанавливает соединение с указанным сервером. В $data_source указываем тип базы данных и название базы данных, например:

$data_source = "DBI:mysql:db_name";

В $username и $password указываем логин и пароль для доступа, в %attr дополнительные параметры соединения.

$rv = $dbh->do($statement);

Выполняет SQL запрос из переменной $statement.

$sth = $dbh->prepare($statement);

Подготовливает SQL запрос из переменной $statement.

$sth = $dbh->prepare__cached($statement);

Подготовливает SQL запрос с кешированием из переменной $statement, кеширование происходит на уровне модуля DBI.

$rv = $sth->execute;

Выполняет подготовленный SQL запрос.

$hash_ref = $sth->fetchrow_hashref;

Возвращает одну запись результата выполненого запроса в виде ассоциативного массива, где названия ключей - это названия полей в таблице. Чтоб получить все записи, то нужно поместить вызов в цикл, например:

while (my $row= $sth->fetchrow_hashref()) { ... }

$ary_ref = $sth->fetchall_hashref;

То же самое, но возвращает все данные в виде масива ассоциативных массивов.

$sql = $dbh->quote($string);

Экранирует строку и помещает её в одинарные кавычки.

$rc = $dbh->disconnect;

Разрывает соединение.

 

Подробное описание

Поделиться: