Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна_робота_5.doc
Скачиваний:
3
Добавлен:
26.08.2019
Размер:
316.42 Кб
Скачать

Задание 2. Доступ к базе данных типа InterBase.

Запустите Delphi. Поместите на форму компоненты со страницы InterBase: TIBDatabase, TIBTransaction, TIBTable и компоненты TDataSource со страницы Data Access, TDBGrid со страницы Data Control. Установите следующие свойства в инспекторе объектов:

  • IBDatabase1

DatabaseName=C:\workwithinterbase\IB_basa.gdb (путь к файлу БД)

DefaultTransaction=IBTransaction1

  • IBTransaction1

DefaultDatabase=IBDatabase1

  • IBTable1

Database=IBDatabase1

TableName=Needs (имя таблицы)

  • DataSource1

DataSet=IBTable1

  • DBGrid1

DataSource= DataSource1

Транзакция - это набор действий с базой данныхвыполняемых по правилу «либо все, либо ни чего». Если во время выполнения данного набора действий, на каком-то этапе невозможно произвести очередное действие, то нужно выполнить возврат базы данных к начальному состоянию (произвести откат транзакции). Таким образом (при правильном планировании транзакций), обеспечивается целостность базы данных. Клиентская программа управляет транзакциями с помощью трех методов компонента TIBTransaction:

StartTransaction - начинает транзакцию;

Commit - подтверждает транзакцию;

Rollback - откат транзакции (отмена всех изменений, сделанных с момента старта транзакции).

Задание 3. Ввод значений в таблицу InterBase.

Поместите на форму два компонента Tеdit и TButton. В Edit1 будем вводить значение поля PartID (поле имеет числовой тип), в Edit2 будем вводить значение поля Info (поле имеет cтроковый тип). В обработчике щелчка на кнопке пропишем заполнение полей таблицы:

procedure TForm1.Button1Click(Sender: TObject);

begin

if (Edit1.Text<>'')and(Edit2.Text<>'') then

begin

//начало транзакции

IBTransaction1.Active:=false;

IBTransaction1.StartTransaction;

try

//дополнительная проверка, открыта ли нужная таблица

if not IBTable1.Active then IBTable1.Open;

//вставка записи

IBTable1.Insert;

IBTable1.Fields[0].AsInteger:=StrToInt(Edit1.Text);

IBTable1.Fields[1].AsString:=Edit2.Text;

//информация записывается в таблицу

IBTable1.Post;

//успешное завершение транзакции

IBTransaction1.Commit;

except

//ошибка

IBTransaction1.Rollback;

end;

end;

IBTransaction1.Active:=true;

IBTable1.Active:=true;

end;

  • Примечание. При запуске программы пользователю каждый раз прниходится вводить имя и пароль. Чтобы этого избежать, необходимо в инспекторе объектов для компонента IBDatabase1задать свойства:

LoginPrompt=False;

В свойстве Params указать две строки:

user_name=SYSDBA

password=masterkey.