Programming: Delphi
Иллюстрированный самоучитель по Delphi 7 для профессионалов
Компонент TIBTransaction
Компонент TIBTransaction инкапсулирует средства управления транзакцией при работе с сервером InterBase. Для этого он должен быть связан с компонентом
TiBDatabase при помощи своего свойства
Один компонент транзакции может быть связан с несколькими компонентами
TiBDatabase. Для этого необходимо задать один компонент транзакции в свойствах
DefaultTransaction всех необходимых компонентов соединений.
Список всех связанных компонентов соединений содержится в свойстве
а их общее число возвращает свойство
Во время выполнения новое соединение может быть связано с транзакцией методом
Или же, связь может быть отменена:
А метод
разрывает все установленные связи с компонентом
TIBDatabase.
Индекс связанного соединения в списке Databases транзакции можно получить при помощи метода
Например, если вам не известно ничего, кроме имени компонента, можно поступить так:
var i, FIndex: Integer;
...
for i := 0 to Forml.ComponentCount — 1 do
if Forml.Components[i].Name = 'IBDatabasel'
then FIndex :=
IBTransactionl.FindDatabase(TIBDatabase(Forml.
Components[i]));
...
Соединение, заданное по умолчанию свойством
DefaultDatabase, возвращает метод
Транзакция может иметь набор параметров, задать которые можно при помощи свойства
аналогично компоненту TIBDatabase. Прямой доступ для чтения к буферу параметров транзакции Transaction Parameters Buffer (TPB) типа
pchar обеспечивает свойство
Длина буфера содержится в свойстве
Дескриптор транзакции представлен свойством
После того как транзакция настроена, ее можно начать, сохранить или отменить.
Транзакция стартует при помощи метода
При необходимости сохранить все сделанные в рамках текущей транзакции изменения используется метод
Если выполненные действия нужно отменить, применяется метод
Для открытия и сохранения транзакции можно использовать традиционное свойство
После начала новой транзакции свойство
принимает значение True, а после фиксации или отката — значение
False.
При работе с сервером InterBase 6.0 можно использовать методы
commit-Retaining и RollbackRetaining. В отличие от стандартных операций фиксации и отката транзакций, эти методы после передачи или отмены изменений оставляют текущую транзакцию открытой.
Если сервер перегружен и не откликается на транзакцию, то по истечении времени, заданного свойством
выполняется действие, заданное свойством
type TTransactionAction = (taRollback, taCommit, taRollbackRetaining,
taCommitRetaining);
property DefaultAction: TTransactionAction;
taRollback — откат транзакции;
taCommit — фиксация транзакции;
taRollbackRetaining — отмена изменений без завершения транзакции (для сервера InterBase 6.0);
taCommitRetaining — фиксация изменений без завершения транзакции (для сервера InterBase 6.0).
Для компонента транзакции можно настроить ее автоматическое завершение при закрытии последнего открытого компонента, инкапсулирующего набор данных, связанного с тем же соединением, что и транзакция.
Для этого свойство
type TAutoStopAction = (saNone, saRollback, saCoramit,
saRollbackRetaining, saCommitRetaining); property AutoStopAction :
TAutoStopAction;
не должно иметь значение saNone.
Остальные значения свойства выполняют следующие действия:
- saRollback — откат транзакции;
- saCommit — фиксация транзакции;
- saRollbackRetaining — отмена
изменений без завершения транзакции (для сервера InterBase 6.0);
- saCommitRetaining — фиксация
изменений без завершения транзакции (для сервера InterBase 6.0).
Метод
выполняет действие, предусмотренное текущим значением свойства
Диагностика состояния транзакции во время выполнения осуществляется группой специальных методов. В случае отрицательного результата все они генерируют исключение
EiBClientError.
Метод
проверяет, имеются ли в списке Databases связанные соединения. Метод
проверяет, открыта ли в данный момент транзакция. Метод
проверяет, закрыта ли в данный момент транзакция.
Единственный метод-обработчик транзакции
вызывается по истечении срока ожидания выполнения транзакции, заданного
свойством IdleTimer.
Назад | Оглавление | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|