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

       

РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL


ЛАБОРАТОРНАЯ РАБОТА 4

РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL

Цель работы

Приобретение начальных навыков работы со встроенным SQL средствами Informix-ESQL/C.

Содержание работы и методические указания к ее выполнению

Informix-ESQL/C - инструмент разработки приложений для базы данных на языке Си с возможностью использования средств SQL. При создании ESQL/C-программы пользователь разрабатывает С-программу, включает в нее специальные заголовочные файлы и SQL-описания, реализующие работу с базой данных. Препроцессор ESQL/C преобразует SQL-описания в обращения к библиотечным функциям, которые взаимодействуют с сервером базы данных, и дает на выходе С-код. Далее полученный С-код компилируется и линкуется. Исходя из вышесказанного, пользователь, желающий разрабатывать ESQL/С-программы должен обладать навыками работы с языком Си и уметь пользоваться средствами SQL. При этом необходимо учитывать особенности той операционной системы, в рамках которой создается клиентское приложение. В данной и двух последующих лабораторных работах предполагается разработка несложных ESQL/С-программ. В лабораторных работах используется база данных, содержащая 4 таблицы:

  • таблица поставщиков (S);
  • таблица деталей (P);
  • таблица изделий (J);
  • таблица поставок (SPJ).
  • Если приведенная база данных отсутствует (или любая таблица из нее), то необходимо восстановить базу данных, пользуясь интерактивными средствами программы Informix-SQL, либо выполнив необходимый запрос на языке SQL в рамках данной программы:

    create database Postavka with buffered log;

    create table S (n_post char(6) NOT NULL, family nchar(20),



    rating smallint, town nchar(20));

    create table P (n_det char(6), name nchar(20),

    color nchar(20), weigh smallint,

    town nchar(20));

    create table J (n_izd char(6), name nchar(20),

    town nchar(20));

    create table SPJ (n_post char(6), n_det char(6),

    n_izd char(6), kol smallint));

    insert into S

    values (...........................);

    insert into P


    values (...........................);

    insert into J

    values (...........................);

    insert into SPJ

    values (...........................)

    Для разработки ESQL/С-программ необходимо изучить:

  • общие правила подготовки программ и использования программных средств Informix-ESQL/C;


  • аппарат определения и использование главных переменных;


  • средства встраивания SQL-описаний в С-программы;


  • структуру области связи SQLCA и средства обработки ошибок SQL-запросов;


  • назначение и структуру заголовочных файлов.


  • Данная лабораторная работа связана с написанием таких программ на ESQL/C, которые после обработки SQL-запроса возвращают единственную строку, а также выполняют простейшие операции по модификации базы данных без использования аппарата курсора.

    Исходный файл с программой на Informix-ESQL/C должен иметь расширение .ec (например, source.ec).

    Вызов Informix-ESQL/C выполняется командой esql. Ниже приведен упрощенный вариант синтаксиса команды esql. Приведенные в диаграмме обозначения имеют смысл:

    source.ec - имя исходного модуля;

    outfile - имя создаваемого выполняемого модуля;

    Compiling/ /Linking Options - опции компилятора/редактора;

    - e - выполнить только препроцессорную обработку с получением на выходе программы на языке Си (source.c);

    -V - получить информацию о версии Informix-ESQL/C;

    otherCsrc.c - другие исходные модули, подлежащие включению в программу;

    otherCobj.o - другие объектные модули, подлежащие включению в программу;

    yourlib.a - другие библиотеки, используемые для построения программы на.

    Входные данных для SQL-описаний передаются через так называемые главные переменные, через них же возвращаются результаты запроса, которые отображаются на экране терминала для контроля выполнения. При объявлении главных переменных в языке Informix-ESQL/C оператору описания переменных предшествует знак $, либо объявление производится внутри блока

    exec SQL begin declare section

    . . . .

    exec SQL end declare section

    При использовании главных переменных в программе на Informix-ESQL/C внутри SQL-описаний им также предшествует знак $, вне SQL-описаний главные переменные используются обычным образом.


    SQL-описаниям (операторам языка SQL) в программе на языке Informix-ESQL/C также предшествует знак $.

    Сервер баз данных возвращает код результата и, возможно, другую информацию в структуру данных, называемую областью связи SQL (SQL Communication Area - SQLCA). Структура и назначение отдельных полей SQLCA приведены в Приложении 3. Структура SQLCA описана в заголовочном файле sqlca.h, который автоматически подключается к программе на Informix-ESQL/C. Среди других заголовочных файлов отметим:

    datatime.h - описывает структуру для типа данных datetime;

    decimal.h - описывает структуру для типа данных decimal;

    locator.h - описывает структуру для blobs-данных;

    varchar.h - описывает структуру для типа данных varchar;

    sqlhdr.h - описывает прототипы функций библиотеки Informix-ESQL/C;

    sqltype.h, sqltypes.h - структуры для работа с динамическими главными переменными.

    Последовательность выполнения лабораторной работы

    1. Разработать и отладить ESQL/С-программу, реализующую задачу 1 из соответствующего варианта заданий.

    2. Разработать и отладить ESQL/С-программу, реализующую задачу 2 из соответствующего варианта заданий и связанную с модификацией базы данных.

    3. Разработать и отладить ESQL/С-программу, добавляющую в таблицу поставщиков S поставщика с фамилией члена Вашей бригады, а также 3-4 произвольные поставки в таблицу SPJ, связанные с этим поставщиком. Атрибуты добавляемых строк должны быть выбраны таким образом, чтобы изменить результат решения задачи 1.

    4. Выполнить ESQL/С-программу, разработанную в п. 1 для нового состояния базы данных. Сравнить результаты.

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

    Требования к разрабатываемой программе

    Разрабатываемые ESQL/C-программы должны удовлетворять следующим требованиям:

  • обеспечивать необходимую обработку ошибок;


  • все действия в отношении базы данных должны выполняться в рамках транзакций (операторы SQL Begin work, Commit work, Rollback work, см. Приложение 2);




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


  • программа должна быть достаточно документирована.


  • Варианты заданий

    Вариант 1

    1. Выдать полную информацию о поставщике, имеющим максимальный рейтинг.

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

    Вариант 2

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

    2. Поменять местами города, где проживают поставщики с минимальным и максимальным рейтингом.

    Вариант 3

    1. Выдать полную информацию о детали, имеющей максимальный вес.

    2. Перевести поставщика с максимальным рейтингом в Лондон.

    Вариант 4

    1. Выдать общий объем поставок деталей красного цвета.

    2. В таблице деталей сменить название детали "Винт" на название детали с максимальным весом.

    Вариант 5

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

    2. В таблице деталей сменить город, где изготавливается самая легкая деталь, на Париж.

    Вариант 6

    1. Выдать общий объем поставок деталей для изделия J2.

    2. Увеличить рейтинг всех лондонских поставщиков на 5.

    Вариант 7

    1. Выдать общий объем поставок деталей для изделия с максимальным объемом поставок.

    2. Увеличить вес всех красных деталей на 10.



    Контрольные вопросы



  • Что такое главные переменные? Как они определяются и используются в программах на языке ESQL/С?


  • Каковы правила использования SQL-описаний в программах на языке ESQL/C?


  • Какова структура области связи SQLCA?


  • Как обрабатываются NULL-значения в программах на языке ESQL/C?


  • Каковы общие правила обработки ошибок SQL-вызовов?


  • Каково назначение заголовочных файлов?


  • Какой заголовочный файл должен быть подключен к программе для доступа к структуре SQLCA?


  • Что такое уровень изоляции? Какой уровень изоляции может использоваться при выполнении программ данной лабораторной работы?



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