Компонент TIBTransaction инкапсулирует средства управления транзакцией при работе с сервером InterBase. Для этого он должен быть связан с компонентом TïBDatabase при помощи своего свойства

property tefaultCatabase: TiBCatabase;

Один компонент транзакции может быть связан с несколькими компонентами TïBDatabase. Для этого необходимо задать один компонент транзакции в свойствах DefaultTransaction всех необходимых компонентов соединений (см. выше).

Список всех связанных компонентов соединений содержится в свойстве property Databases[Index : Ihteger]: TiBDatabase; a их общее число возвращает свойство

property DatabaseCount : Ihteger;

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

flinctionAddDatabase(db: TIBEatabase) : Ihteger; Или же, связь может быть отменена: prœedure RemoveDatabase ( Idx : Ihteger) ; A метод

prœedure RemoveDatabases ;

разрывает все установленные связи с компонентом TIBDatabase.

Индекс связанного соединения в списке Databases транзакции можно получить при помощи метода

function FirrJEatabase (db: TIBEatabase) : Ihteger;

Например, если вам не известно ничего, кроме имени компонента, можно поступитьтак:

var i, FIndex: Ihteger;

for i := 0 to Forml.ComponentCount - 1 do if Forml.Components[i].Name = 'IBDatabasel' then FIndex :=

IBTransactionl.FindDatabase(TIBDatabase(Forml.Components[i]));

Соединение, заданное по умолчанию свойством EtefaultEatabase, возвращает метод

function FindDefaultDatabase: TIBDatabase;

Транзакция может иметь набор параметров, задать которые можно при помощи свойства

prcperty Params : TStrings;

аналогично компоненту TIBDatabase. Прямой доступ для чтения к буферу параметров транзакции Transaction Parameters Buffer (ТРВ) типа pchar обеспечивает свойство

propertyTPB: PChar;

Длина буфера содержится в свойстве

prcperty TPBLength: Short; Дескриптортранзакциипредставленсвойством prcperty Handle: tisc_tr_handle,-

После того как транзакция настроена, ее можно начать, сохранить или отменить.

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

procedure StartTransaction;

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

procedure Ccmrdt;

Если выполненные действия нужно отменить, применяется метод

procedure Rollback;

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

property Active: Boolean;

После начала новой транзакции свойство

property InTransaction: Boolean;

принимает значение True, а после фиксации или отката - значение False.

При работе с сервером InterBase 6.0 можно использовать методы Commit-Retaining И RollbackRetaining. В ОГЛИЧИе от стандартных операций фиксации и отката транзакций, эти методы после передачи или отмены изменений оставляют текущую транзакцию открытой.

Если сервер перегружен и не откликается на транзакцию, то по истечении времени, заданного свойством

property IdleTimer: Integer;

выполняется действие, заданное свойством

type TTransactionAction = (taRollback, taCommit, taRollbackRetaining, taCommitRetaining);
property DefaultAction: TTransactionAction;

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31