MySQL & mSQL


              

Msql.pm


Модуль Msql.pm является изначальным интерфейсом Perl к mSQL. Хотя его заменили модули DBI, все же осталось много сайтов, основанных на этом старом интерфейсе. Чтобы продемонстрировать использование Msql.pm, мы продолжим работу с нашим примером «помощника учителя».

Поскольку нам требуется определить школьные классы, в которых будут проводиться экзамены, рассмотрим таблицу предметов. Ее структура выглядит так:

CREATE TABLE subject (

id INT NOT NULL,

name CHAR(500),

teacher CHAR(100) )

CREATE UNIQUE INDEX idxl ON subject (

id,

name,

teacher

)

CREATE SEQUENCE ON subject

Число id является уникальным идентификатором школьного класса, а поля name и teacher являются наименованием курса и фамилией преподавателя соответственно. Все три поля проиндексированы, что ускоряет выполнение запросов. И наконец, мы определили последовательность для таблицы. Эта последовательность генерирует ID.

CGI-программа для обработки этих данных должна выполнять несколько функций:

  • Находить предмет в базе данных.

  • Выводить найденный предмет.

  • Добавлять в базу данных новый предмет.

  • Изменять параметры предмета в базе данных.

    Используя мощь Perl и mSQL, можно без труда объединить все эти функции в одном файле, subject.cgi. Для каждой из операций мы создадим свою функцию. Центральной частью программы будет своего рода коммутатор, распределяющий поступающие запросы по соответствующим функциям. Сами операции мы опишем позднее.

    #Выбор нужной части сценария осуществляется в зависимости

    # от параметра 'action'.

    # Если 'action' не задан, вызывается функция defaultQ.

    &default if not param('action');

    # Этот прием из Camel 2 имитирует переключатель 'switch' в языке С. foreach[A04] (param('action')) {

    /view/ and do { Sview; last; };

    /add$/ and do { &add; last; };

    /add2/ and do { Sadd2; last; };

    /add3/ and do { &add3; last; };

    /add4/ and do { &add4; last; };

    /schange$/ and do { &schange; last; };

    /schange2/ and do { &schange2; last; };



    Содержание  Назад  Вперед