Использование технологий WWW для доступа к базам данных

       

Обработка файлов формата DBF


Для взаимодействия с файлами этого формата существует специальный модуль - Xbase.pm

На текущий момент поддерживается только возможность чтения таких файлов.

Этот модуль подключается стандартным образом: use Xbase;

Новый Xbase объект создается следующим образом:

$database = new Xbase;

Будет создан объект $database, который в дальнейшем будет использоваться для

взаимодействия со всевозможными методами, которые поддерживает модуль.

Доступ к базе данных осуществляется следующим образом:

$database->open_dbf($dbf_name,$idx_name);

Мы ассоциировали DBF-файл и необязательный индексный файл с объектом. Чтобы

определить тип (database type) можно сделать следующее:

print $database->dbf_type;

Вернется строка, которая, если Xbase файл открыт, будет содержать значение



DBF3, DBF4 или FOX.

Чтобы узнать дату последнего обновления делается следующее:

print $database->last_update;

Возвращает строку с датой.

Чтобы узнать номер последней записи можно сделать следующее:

$end=$database->lastrec;

Вернется номер последней записи в файле с базой данных.

Информацию о статусе базы данных можно посмотреть следующим образом:

$database->dbf_stat;

В стандартный выходной поток будет напечатана информация о статусе и структуре

базы данных. Этот метод работает аналогично команде display status.

Посмотреть информацию о статусе индексного файла можно используя метод idx_stat:

$database->idx_stat;

Печатает в стандартный выходной поток (STDOUT) информацию о статусе открытого

IDX-файла.

Для того чтобы перейти на начало файла есть метод go_top:

$database->go_top;

Передвигает курсор чтения на физическое начало файла,если индексы не существуют

и на первую запись, соответствующую порядку, который задается индексом, в

противоположном случае.

Для того чтобы перейти на конец файла есть метод go_bottom:

$database->go_bottom;

Передвигает курсор чтения на физический конец файла,если индексы не существуют

и на последнюю запись, соответствующую порядку, который задается индексом, в


противоположном случае.

Чтобы перейти на следующую запись есть метод go_next:

$database->go_next;

Эквивалентно команде skip 1, которая передвигает курсор на следующую запись.

Чтобы перейти на предыдущую запись есть метод go_prev:

$database->go_prev;

Эквивалентно команде skip -1, которая передвигает курсор на предыдущую запись.

Есть возможность осуществить поиск по заданному ключу:

$stat=$database->seek($keyvalue);

Эта команда устанавливает курсор на первую запись, соответствующую данному

ключу. Но в данном случае база данных должна быть открыта с соответствующим

индексом, в противоположном случае будет выдано сообщение об ошибке и исполнение

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

или нет.

Чтобы узнать номер записи, на которой стоит курсор можно использовать следующую

команду:

$current_rec=$database->recno;

Метод bof возвращает значение true, если курсор находится в самом начале файла.

if ($database->bof) {

print " At the very top of the file \n";

}

Аналогично действует метод eof:

if ($database->eof) {

print " At the very end of the file \n";

}

Чтобы прочитать содержимое какого-либо поля записи можно поступить так:

print $database->get_field("NAME");

Возвращает строку с содержимым поля. Если данная запись помечена для удаления, то

использует псевдоимя поля _DELETED.

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

@fields = $database->get_record;

В массиве они будут располагаться в такой же последовательности, как и в базе

данных.

Для закрытия базы данных используется метод close_dbf.

$database->close_dbf;

Закрывает файл с базой данных, индексами и комментариями. В завершение приведем

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

файла, а также дату последнего обновления и количество записей в базе данных.

#!/usr/bin/perl

use Xbase;

# подключение модуля

$database = new Xbase;

# создание объекта

$d = "/home/smit/employee.dbf";

# имя файла с базой

$i = "/home/smit/employee.cdx";

# имя индексного файла

$database->open_dbf($d,$i);

# открываем базу данных

$database->dbf_stat;

# печатаем статус и структуру

# базы данных

$database->idx_stat;

# печатаем статус и структуру

# индексов

@fields = $database->get_record;

print @fields,"\n";

# печатаем содержимое текущей записи

print $database->last_update, "\n";

# печатаем дату последнего обновления

$end = $database->lastrec;

print $end;

#печатаем номер последней записи

Полная спецификация языка Perl приводиться в Приложении к отчету.

[]

[]

[]


Содержание раздела