Опубликован: 17.08.2006 | Уровень: для всех | Доступ: платный
Лекция 15:

Работа с базами данных

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >

Покажем приемы работы с интерфейсом DBI на примере класса доступа к уже знакомым DBF-файлам - модуля DBD::XBase. Этот модуль нужно установить описанным ранее способом прежде, чем работать с базами данных в формате XBase. В первом примере программа создает таблицу базы данных SQL-командой CREATE:

use DBI;               # использовать DBI  
my $path  = '.';       # каталог, где расположены таблицы БД 
my $table = 'mollusc'; # DBF-файл
# подсоединиться к БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path") 
               or die $DBI::errstr;
# создать таблицу определенной структуры
$dbh->do("CREATE TABLE $table (id INT, 
	name CHAR(35), latin CHAR(30), area CHAR(45))");
$dbh->disconnect;      # отсоединиться от БД

Следующая программа в цикле заполняет созданную таблицу данными из текстового файла, добавляя в нее записи SQL-командой INSERT:

use DBI;               # используем DBI  
my $path  = '.';       # каталог с таблицами БД 
my $table = 'mollusc'; # DBF-файл
# подключаемся к БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path") 
               or die $DBI::errstr;
# подготовим SQL-команду для многократного выполнения
my $sth = $dbh->prepare("INSERT INTO $table 
                       (id, name, latin, area) 
                       VALUES (?, ?, ?, ?)") 
                or die $dbh->errstr();
# в цикле читаем строки для загрузки в БД
open my $text, '<', 'mollusc.txt' or die; # файл, откуда
while (my $data = <$text>) {              # читаем данные,
   chomp($data);                          # удаляя \n
   # и разбивая строку на поля по разделителю ';':
   my ($id, $name, $latin, $area) = split(';', $data);
   # добавляем запись, подставляя значения в команду
   $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.

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

Рис. 15.1. Клиентская программа на Perl/Tk для работы с базой данных
< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Мария Кравцова
Мария Кравцова
Россия, Сочи, РГПУ им. А.И.Герцена, 1997
Екатерина Архангельская
Екатерина Архангельская
Россия, СПбГУАП