Чтение онлайн

на главную - закладки

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

$sth->execute($id, $name, $latin, $area) or die;

}

close $text; # закрываем тестовый файл

$dbh->disconnect; # отсоединяемся от БД

Далее можно выполнять различные действия с данными в таблице, используя команды SQL, как это сделано в программе, где изменяются значения перечисленных колонок в записи с указанным идентификатором и удаляется запись по уникальному номеру:

use DBI; # использовать DBI

my $path = '.'; # каталог, где расположены таблицы БД

my $table = 'mollusc'; # DBF-файл

#
соединиться с БД, используя драйвер DBD::XBase

my $dbh = DBI->connect("dbi:XBase:$path")

or die $DBI::errstr;

# изменить запись с указанным идентификатором,

# заменяя значения перечисленных полей на новые

$dbh->do("UPDATE $table SET name=?,area=? WHERE id=?",

undef, 'Жемчужная пинктада', 'Австралия', 89147) or die;

# удалить запись с идентификатором 93749

$dbh->do("DELETE FROM $table WHERE id=93749") or die;

$dbh->disconnect; # отсоединиться от БД

Для выборки данных из таблицы используется SQL-команда SELECT, в которой можно указывать, данные из каких колонок записи нужно включить в выборку, а также по какому условию отбирать строки таблицы:

use DBI; # использовать DBI

my $path = '.'; # каталог, где расположены таблицы БД

my $table = 'mollusc'; # DBF-файл

# соединиться с БД, используя драйвер DBD::XBase

my $dbh = DBI->connect("dbi:XBase:$path")

or die $DBI::errstr;

# выбрать у всех строк таблицы указанные поля

my $sth =

$dbh->prepare("SELECT name,area FROM $table WHERE id>?")

or die $dbh->errstr;

$sth->execute(1000) or die $sth->errstr; # выполнить команду

while (my @row = $sth->fetchrow_array) { # и напечатать

print "@row\n"; # выбранные строки

} # в цикле по одной

$dbh->disconnect; # отсоединиться от БД

Для отображения информации из базы данных можно разработать клиентское приложение с графическим интерфейсом, используя библиотеку Perl/Tk, как это показано на рис. 15.1.

Рис. 15.1.Клиентская программа на Perl/Tk для работы с базой данных

Интерфейс DBI привлекает программистов тем, что время и усилия, потраченные на его изучение, окупаются сторицей, поскольку, научившись работать с одной базой данных, можно применять эти знания при работе со всеми остальными, включая "тяжеловесные" СУБД, которые выполняются на специализированных серверах. Сервер баз данных обычно находится на выделенном компьютере, а взаимодействие с ним строится по технологии "клиент-сервер". Это означает, что сервер принимает запросы, поступающие от пользовательских программ, выполняет указанные в запросе действия по обработке информации в базе данных, а затем отправляет

результат обработки клиенту. Для повышения производительности, распределения нагрузки и обеспечения непрерывности работы такие СУБД объединяются в кластеры серверов баз данных, которые могут состоять из большого числа мощных компьютеров. Для работы с конкретной системой управления базой данных потребуется установка драйвера для этой СУБД. В хранилище модулей CPAN найдутся драйверы для всех основных серверов баз данных: IBM DB2, MS SQL Server/Sybase, Oracle, PostgreSQL и многих других. Помимо высокой скорости обработки больших объемов данных, СУБД предоставляют программисту дополнительные возможности по обработке информации. Вот основные из них.

1 Реализация языка манипулирования данными позволяет в запросе использовать объединения нескольких таблиц (JOIN), предусмотренные в стандарте языка SQL.

2 В SQL-запросах можно использовать подзапросы для задания дополнительных условий выборки.

3 Согласованность и непротиворечивость данных при изменении нескольких таблиц достигается при помощи использования механизма транзакций.

4 Часто выполняемые действия над информацией в базе данных можно программировать на встроенном языке базы данных в виде хранимых процедур. Когда такие процедуры вызываются в SQL-команде, то они будут эффективно выполняться на сервере.

5 Для реакции на события, возникающие при обработке информации в базе данных, можно использовать специальные хранимые процедуры - триггеры.

6 Для быстрого поиска и выборки может применяться индексация данных.

7 Доступ к информации в базе данных контролируется системой разграничения доступа СУБД на основе парольной защиты.

Взаимодействие с сервером баз данных с помощью DBI будет показано на примере работы со свободно распространяемой СУБД PostgreSQL Database Server, доступной для всех основных вычислительных платформ, включая Linux и MS Windows. Свежий дистрибутив PostgreSQL всегда можно загрузить с сайта www.postgres.org, а ее установка с помощью программы-мастера не вызовет трудностей даже у начинающего программиста. Далее нужно уже описанным способом установить драйвер DBD::Pg. Кстати, СУБД PostgreSQL демонстрирует еще одно применение языка Perl: она позволяет использовать Perl для программирования хранимых процедур наряду с SQL и рядом других языков.

После установки драйвера можно выполнить предыдущие примеры из этой лекции с использованием СУБД PostgreSQL, внеся в них минимальные изменения. В первую очередь изменятся параметры соединения с базой данных, где мы должны указать другой DBD-драйвер (Pg), имя сервера, имя базы данных, имя пользователя и пароль для доступа к СУБД:

my $host = 'localhost'; # имя сервера

my $dbname = 'postgres'; # имя базы данных

my $user_name = "postgres"; # имя пользователя

my $password = "SECRET"; # пароль пользователя

my $dbh = DBI->connect(

"dbi:Pg:dbname=$dbname;host=$host", # источник данных

$user_name, $password);

После этой модификации программа создания таблицы успешно отработает с СУБД PostgreSQL и создаст в указанной базе данных таблицу 'mollusc'. И другие примеры из этой лекции, использующие интерфейс DBI, также будут работать с PostgreSQL или другой СУБД, после того как их настроят на работу с новым источником данных. Конечно, если применять специфические SQL-команды и другие средства программирования, использующие особенности конкретного сервера баз данных, то адаптация программ для работы с другой СУБД потребует гораздо больше усилий.

Поделиться:
Популярные книги

Этюды желудочной хирургии

Юдин Сергей Сергеевич
Классика и современность
Научно-образовательная:
медицина
5.00
рейтинг книги
Этюды желудочной хирургии

Собрание стихотворений том 4

Вэй Михаил
Поэзия:
поэзия
5.75
рейтинг книги
Собрание стихотворений том 4

"Фантастика 2025-10". Книги 1-31

Вальтер Макс
Фантастика 2025. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Фантастика 2025-10. Книги 1-31

Газлайтер. Том 31

Володин Григорий Григорьевич
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
6.40
рейтинг книги
Газлайтер. Том 31

Лубянка и Кремль. Как мы снимали Хрущева

Семичастный Владимир Ефимович
Мемуары под грифом секретно
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Лубянка и Кремль. Как мы снимали Хрущева

"Фантастика 2025-112". Компиляция. Книги 1-30

Булгакова Ольга Анатольевна
Фантастика 2025. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-112. Компиляция. Книги 1-30

Пространство. Компиляция

Кори Джеймс С. А.
Пространство
Фантастика:
научная фантастика
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Пространство. Компиляция

"Княгиня Ольга". Компиляция. Книги 1-19

Дворецкая Елизавета Алексеевна
Княгиня Ольга
Приключения:
исторические приключения
5.00
рейтинг книги
Княгиня Ольга. Компиляция. Книги 1-19

Посмертные записки Пиквикского клуба

Диккенс Чарльз
Проза:
классическая проза
5.00
рейтинг книги
Посмертные записки Пиквикского клуба

Управленческая элита. Как мы ее отбираем и готовим

Тарасов Владимир
Деловая литература:
управление, подбор персонала
5.00
рейтинг книги
Управленческая элита. Как мы ее отбираем и готовим

Зеркало силы

Кас Маркус
3. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Зеркало силы

Фехтовальщица

Смородина Татьяна
Фантастика:
фэнтези
5.00
рейтинг книги
Фехтовальщица

Егерь. Системный зверолов

Скиба Николай
1. Зверолов
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
6.50
рейтинг книги
Егерь. Системный зверолов

Книга шифров. Тайная история шифров и их расшифровки

Сингх Саймон
Научно-образовательная:
культурология
6.25
рейтинг книги
Книга шифров. Тайная история шифров и их расшифровки