Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
26--30.docx
Скачиваний:
5
Добавлен:
31.08.2019
Размер:
78.7 Кб
Скачать

Основные методы компонента Query.

Close

Закрывает соединение с базой данных, переводя свойство Active в False. При изменении запроса в свойстве SQL сначала надо закрыть соединение.

GetFieldNames

Список имен полей таблицы, связанной с Query, который загружается в переменную типа TStrinds. Например: Query1.GetFieldNames(Combobox1)

Open

открывает соединение с базой данных и выполняет запрос SQL, если этот запрос содержит оператор Select

Для осуществления любого другого запроса, кроме Select используется метод ExecSQL. Неизвестный запрос, сформированный в переменной ssql типа строка, можно выполнить с помощью следующих операторов: try  Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(ssql); Query.Open; except on EDataBaseError do Query1.ExecSQL; end;

Работа с базами данных в сети. При работе с базами данных в сети используются компоненты DataBase и StoredProc (хранимая процедура). Компонент DataBase автоматически вставляется Delphi в любое приложение работающее с базами данных. Он решает следующие задачи: Создание связи с удаленным сервером Регистрацию пользователя при первом обращении к серверу создание локальных псевдонимов приложений Управление транзакциями Определение уровня изоляции транзакций Хранимые процедуры используются для того, чтобы использовать мощности сервера для решения каких-то задач, например поиска записей, удовлетворяющих заданному условию, и пересылки клиенту только результатов. Хранимые процедуры пишутся на языке сервера. //Select Dep Отдел, count (*) Всего_сотрудников FROM Pers Group By Dep  procedure TForm1.CBDepChange(Sender: TObject); begin With Query1 do  begin Close; Params[0].AsString:=CBDep.Text; Open; end; end; 

28 Форматы SQL-команды добавления, удаления, изменения записей. Методы выполнения SQL- команд управления данными.

Использование языка SQL в Delphi

Представляю краткую справочную информацию по использованию языка SQL в среде программирования Delphi.

Для использования в программе команд языка SQL необходимо поместить на форму объект TQuery. Назовем его MyQuery. А поместив на форму объекты TDBGrid и TDataSource и связав все три объекта между собой, получим возможность видеть в объекте TDBGrid результаты SQL запросов.

Добавление записи в таблицу

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

with MyQuery do begin     Active:=False;     SQL.Clear;     SQL.Add('INSERT INTO "'+Tbl+'"');     SQL.Add('VALUES ('+val1+', '+val2+', "'+val3+'")');     ExecSQL; end;

Здесь val1, val2 - добавляемое значение целого или вещественного типа; val3 - добавляемое значение строкового типа. Последовательность расположения добавляемых значений в тексте запроса важна и должна соответствовать порядку следования полей таблицы.

Запрос SQL для удаления записей из таблицы

Для удаления записей из таблицы tbl значения поля fld которых равны val используется следующий код:

with MyQuery do begin     Active:=False;      SQL.Clear;      SQL.Add('DELETE');      SQL.Add('FROM "'+Tbl+'"');     SQL.Add('WHERE '+Fld+' = "'+Val+'"');     ExecSQL; end;

Запрос SQL для изменения записей в таблице

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

Пример запроса:

with MyQuery do begin     Active:=False;      SQL.Clear;      SQL.Add('UPDATE "'+Tbl+'"');      SQL.Add('SET '+UpdFld+' = "'+UpdVal+'"');     SQL.Add('WHERE '+Fld+' = "'+Val+'"');     ExecSQL; end;

29 Понятие и назначение хранимой процедуры, триггера и генератора.

Хранимые процедуры

Хранимая процедура представляет собой подпрограмму, расположенную на сер­вере и вызываемую из приложения клиента. Использование этих объектов уве­личивает скорость доступа к БД по следующим причинам:

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

  • хранимая процедура, в отличие от запроса, не требует предварительной син­таксической проверки.

Еще одним преимуществом при обращении к хранимым процедурам является то, что будучи общими для всех приложений-клиентов, они реализуют единые для них правила работы с БД.

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

Создание и удаление хранимых процедур

Хранимая процедура создается инструкцией

create procedure

СИмя процедуры> [(ССписок входных параметров>)] [returns (ССписок выходных параметров>)] as сТело процедуры>

После имени процедуры идет необязательный список входных параметров, с помощью которых из приложения в процедуру передаются исходные данные. В свою очередь, список выходных параметров, с помощью которых в приложе­ния передаются результаты выполнения процедуры, указывается после описате­ля returns. Для каждого параметра указываются его имя и тип (через пробел), разделителем параметров в списке служит запятая.

ССписок параметров> =

[СИмя параметра!> стип параметра!>,]

[СИмя napaMeTpaN> стип napaMeTpaN>]

При задании имен процедур и параметров (как и других объектов) для удобства целесообразно использовать мнемонические правила. Например, имя процедуры можно начинать с префикса р (от Procedure), имя входного параметра — с ip (от Input Parameter), а имя выходного параметра — с ор (от Output Parameter).

При использовании параметра в выражениях тела процедуры перед его именем нужно указывать двоеточие (:).

Тело процедуры состоит из двух частей — описательной и исполнительной — и имеет следующий формат:

[собъявление переменных>] begin

сИнструкция> [сИнструкция>]

end

В описательной части объявляются переменные, используемые внутри процеду­ры. Эти переменные являются локальными и по окончании работы процедуры теряют свои значения. В исполнительной части располагаются инструкции, вы­полняющие необходимые действия. Как и в языке Pascal, инструкции распола­гаются между ключевыми словами begin и end. В теле процедуры должна со­держаться как минимум одна инструкция.

Созданную хранимую процедуру можно удалить или изменить. Удаляется про­цедура инструкцией

DROP PROCEDURE СИмя процедуры>

Изменение процедуры выполняется инструкцией alter procedure, имеющей такой же формат, как и инструкция create procedure. После выполнения ин­струкции alter procedure предыдущее описание хранимой процедуры с ука­занным именем заменяется на новое описание.

Создание и изменение триггера

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

CREATE TRIGGER СИмя триггера> FOR СИмя таблицы> [ACTIVE | INACTIVE] {BEFORE | AFTER} {UPDATE | INSERT | DELETE} [POSITION СЧисло>]

AS сТело триггера>

Описатели active и inactive определяют активность триггера сразу после его создания. По умолчанию действует active, и созданный триггер активен, т. е. при наступлении соответствующего события будет выполняться. Если триггер неактивен, то при наступлении соответствующего события он не вызывается. Ранее созданный триггер можно активизировать или, наоборот, деактивизировать.

Описатели before и after задают момент начала выполнения триггера до или после наступления соответствующего события, связанного с изменением записей.

Описатели update, insert и delete определяют, при наступлении какого со­бытия вызывается триггер — при редактировании, добавлении или удалении записей соответственно.

Для одного события можно создать несколько триггеров, каждый из которых будет автоматически выполнен (если находится в активном состоянии). При наличии нескольких триггеров порядок их вызова (выполнения) определяет число, указанное в операнде position. Триггеры выполняются в порядке воз­растания этих чисел.

Созданный триггер можно удалить или изменить. Удаляется триггер инструкцией

DROP TRIGGER СИмя триггера>

Изменение триггера выполняется инструкцией alter trigger, формат которой не отличается от формата инструкции создания триггера. После выполнения инструкции alter trigger предыдущее описание триггера с указанным именем заменяется на новое.

Программирование триггера аналогично программированию хранимой процеду­ры, для чего используется специальный язык, позволяющий также создавать хранимые процедуры.

ГЕНЕРАТОР

Напомним, что, в отличие от базы данных Paradox, для таблиц InterBase отсут­ствует автоинкрементный тип, обеспечивающий автоматическую установку уни­кальных значений. Поэтому для обеспечения уникальности значений ключевых столбцов совместно с триггерами используются генераторы. Генератор возвра­щает уникальное целочисленное значение.

С помощью языка SQL-сервера можно создать генератор и установить для него начальное значение. Генератор создается следующией инструкцией:

CREATE GENERATOR СИмя генератора>; Начальное значение задается инструкцией:

SET GENERATOR СИмя генератора> ТО сНачальное значение>;

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

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

GEN_ID (СИмя генераторам-, <Шаг>) ;

Эта функция возвращает значение, увеличенное на целочисленный шаг относи­тельно предыдущего значения генератора.

( Замечание ^

После определения начального значения генератора изменять его нельзя. Также нельзя изменять шаг. Невыполнение этого правила приведет к тому, что генератор может повторно возвратить уже имеющееся значение со всеми вытекающими по­следствиями.

Пример создания генератора:

CREATE GENERATOR GenStore; SET GENERATOR GenStore TO 1;

Здесь создается генератор GenStore, имеющий начальное значение 1. Пример обращения к этому генератору приведен в предыдущем разделе —

GEN_ID(GenStore, 1).

30 Структура хранимой процедуры.

текст процедуры (триггера) можно вставлять комментарии. Для ограничения комментариев используются символы /* и */.

В язык хранимых процедур включены инструкции:

  • объявления переменных;

  • присваивания;

  • условные;

  • составные;

  • цикла;

  • выбора записи;

  • выбора нескольких записей (набора данных);

  • возврата значений;

  • выхода из процедуры;

  • вызова процедуры;

  • посылки сообщения.

Инструкции должны заканчиваться точкой с запятой (кроме составной инструкции). Инструкция объявления переменных имеет следующий формат:

DECLARE VARIABLE СИмя переменной> сТип переменной>;

Допустимыми типами для переменных являются типы столбцов InterBase, на­пример, VARCHAR ИЛИ DATE.

Переменные являются локальными и действуют с момента входа в процедуру до момента выхода из нее. Например, в командах

DECLARE VARIABLE Number INTEGER; DECLARE VARIABLE NewString VARCHAR(10); DECLARE VARIABLE WorkDate DATE;

объявляются три переменных Number, NewString и WorkDate целого типа, 1 Itiia "строка" и "дата" соответственно.

Инструкция присваивания предназначена для установки значения переменной и имеет вид

<Имя переменной> = сВыражение>;

При выполнении этой инструкции вычисляется значение выражения и присваи­вается переменной, имя которой задано в левой части инструкции. Можно ука­зывать имена локальных переменных и выходных параметров, перед именем выходного параметра двоеточие не ставится. Переменная и выражение должны иметь совместимые типы, в противном случае при выполнении процедуры воз­никает ошибка. В качестве операндов выражения можно использовать значения, имена переменных и параметров, встроенные и пользовательские функции, а также вызовы генераторов.

Так, в примере

DECLARE VARIABLE n INTEGER; DECLARE VARIABLE s VARCHAR(30);

n = 17;

s = UPPER(s);

целочисленной переменной n присваивается значение 17, а символы строки s переводятся в верхний регистр.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]