The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Perl DBI (perl sql db database howto)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, sql, db, database, howto,  (найти похожие документы)
Date: Mon, 23 Oct 2000 12:18:57 +0400 (MSD) From: MailList: Perl в примерах Subject: Perl DBI Perl DBI Николай Матковский (matkovsky@ukrpost.net) Эта статья послужит вам справочником по интерфейсу Perl BDI. DBI является унифицированным интерфейсом для доступа к базам данных вне зависимости от типа СУБД. Это означает, что используя DBI вы можете написать скрипт, который будет без всяких изменений работать на различных платформах с различными СУБД. Для использования DBI вам нужно вставить в скрипт строку: use DBI; Методы DBI connect connect ($источник_данных, $имя, $пароль) Устанавливает соединение с указанным сервером. Строка $источник_данных должна начитаться с 'DBI:название_драйвера:'. $dbh = DBI->connect( "DBI:mysql:$database", $user, $password); $dbh = DBI->connect( "DBI:mysql:$database:$hostname", $user, $password); $dbh = DBI->connect( "DBI:mysql:$database:$hostname:$port", $user, $password); Возвращаемое значение - указатель на базу данных, далее используемый для работы с этой базой. disconnect Разрывает соединение с СУБД. Как правило выполняется в конце выполнения программы или когда соединение больше ше нужно. $dbh->disconnect prepare Подготавливает SQL-запрос к выполнению. Принцип работы с SQL-запросами в этом модуле заключается в подготовке и последующего выполнения запроса. $sth = $dbh->prepare("SELECT * FROM SOME_TABLE"); Возвращаемое значение - это идентификатор запроса. Позже это значение может быть использовано для получения результатов выполнения запросов. execute Выполняет запрос, подготовленный ранее методом prepare. $rv = $sth->execute; Возвращаемое значение - это количество строк, подвергшихся изменению. do Этот метод выполняет всю работу последних двух - prepare и execute самостоятельно. $rv = $dbh->do("SELECT * FROM SOME_TABLE"); fetchrow_... Следующие четыре функции предназначены для получения результатов выполнения запросов. @row = $sth->fetchrow_array. Этот метод возвращает следующую строку результата в виде массива начений. Понятно, что для извлечения всех данных следует поместить его вызов в цикл. $row_ref = $sth->fetchrow_arrayref. Этот метод делает то же самое, за исключением того, что возвращает не массив, а указательна массив. $hash_ref = $sth->fetchrow_hashref. Аналогично последнему возвращает указатель, но не на массив, а на ассоциативный массив, ключами которого являются названия полей таблицы, а значениями - соответствующие значения в строке. $table = $sth->fetchall_arrayref. Последний из методов служит для извлечения всех данных за один раз - возвращает указатель на массив, элементами которого являются указатели на строки. finish finish указывает на то, что никакие данные больше не будут востребованы из набора полученного данным указателем на выражение (statement handle). Как правило, этот метод служит для освобождения системных ресурсов, выделеных на указатель. $sth->finish() rows Возвращает количество строк, подвергшихся изменению во время выполнения последнего запроса. Как правило, этим методом пользуются после запроса, отличного от SELECT. $rows_affected = $sth->rows() NUM_OF_FIELDS Это не метод, а атрибут класса, показывающий, сколько полей содержит результат, полученный после выполнения последнего запроса SELECT. $num_of_fields = $sth->{NUM_OF_FIELDS} Этих общих методов вполне достаточно, чтобы эффективно использовать MySQL в программах, тем не менее в модуде DBI::mysql также реализованы методы, специфические для MySQL. Они перечислены ниже. is_... Серия функций is_... предназначена для определения характеристик полей результата. Каждая их них возвращает указатель на массив булевых значений, каждое из которых указывает, обладает ли данное поле определенным свойством. is_blob - определение полей blob is_key - определение ключевых полей is_num - определение полей с данными числовых типов is_pri_key - определение полей - первичных ключей is_not_null - определение полей, значения которых не могут принимать значение NULL $not_null = $sth->is_not_null() length, max_length Аналогично предыдущим функциям, length и max_length возвращают массивы с максимально возможными размерами полей (length)и максимальными длинами представленых в полях данных (max_length). @possible_max_lengths = $sth->{length}; @actual_max_lengths = $sth->{max_length}; NAME Этот атрибут содержит указательна массив с названиями всех полей, представленых в результате. $names = $sth->{NAME} type Аналогично предыдущему, содержит указытель на массив, содержащий типы полей, представленых в результате. $types = $sth->{type} Пример #!/usr/bin/perl use DBI; $dbh = DBI->connect("DBI:mysql:test_database", "mysql_user","mysql_password") or die "Error connecting to database"; $statement = "SELECT LASTNAME FROM names WHERE FIRSTNAME = 'Bob' LIMIT 1;"; $rv = $dbh->do($statement); goto DISCONN if $rv eq '0E0'; # записей с именем Bob не найдено $statement = "SELECT BIRTHDAY, ADDRESS FROM personal WHERE NAME = 'Nataly';"; $sth = $dbh->prepare($statement); $rv = $sth->execute; @row = $sth->fetchrow_array; $rc = $sth->finish; # освобождаем память print "Birthday: $row[0]\n"; print "Address: $row[1]\n"; $rc = $dbh->disconnect;

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру