Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Управление соединениями и транзакциями

CuBook05

Установление соединения с хранилищем данных может осуществляться компонентами доступа к данным ADO через их свойство Connectionstring. Кроме того, компоненты доступа к данным ADO могут соединяться с хранилищем данных через свойство Connection, связывающее их с компонентом соединения ADOConnection. При этом последний компонент связывается с хранилищем данных через свое свойство Connectionstring.
 
Достоинство применения компонента ADOConnection для связи компонентов доступа к данным с хранилищами данных состоит в том, что он позволяет управлять параметрами соединения и транзакциями. С помощью свойства CoursorLocation типа TCursorLocation можно задать библиотеку, используемую курсором при соединении с хранилищем данных. Используемое по умолчанию значение clUseClient означает, что все данные располагаются и обрабатываются на компьютере-клиенте. При этом достигается наибольшая гибкость: возможны операции, которые могут не поддерживаться сервером. Тем не менее, операторы SQL все равно выполняются на сервере, а клиенту передаются результаты выполнения запроса.
 
Если свойству CoursorLocation задано значение clUseServer, то обработка данных ведется на сервере. Такое значение свойства целесообразно устанавливать в случае задания команд, возвращающих большой объем данных.
 
При использовании технологии ADO соединение может быть синхронным или асинхронным, что можно задать с помощью свойства Connectoptions типа TConnectoption, который описан так:
enum TConnectOption {coConnectUnspecified, coAsyncConnect};
Значение coConnectUnspecified задает синхронное соединение, которое всегда ожидает результат последнего запроса, значение coAsyncConnect задает асинхронное соединение, при котором новые запросы выполняются, не ожидая ответа от предыдущих запросов.
 
Перед установлением соединения возникает событие OnWillconnect типа TWillConnectEvent, который описан так:
TWillConnectEvent = procedure(Connection: TADOConnection; var ConnectionString, UserID, Password: WideString; var ConnectCptions: TConnectOption; var EventStatus: TEventStatus) of object;
Здесь:
  • Connection указывает на соответствующий компонент соединения
  • ConnectionString, UserlD, Password определяют строку соединения, имя и пароль пользователя соответственно
  • Connectoptions указывает на синхронное или асинхронное соединение
Параметр EventStatus указывает на успешность выполнения запроса на соединение. Тип этого параметра описан так:
enum TEventStatus {esOK, esErrorsOccured, esCantDeny, esCancel, esUnwantedEvent};
Здесь:
  • esOK - соединение выполнено успешно
  • esErrorsOccured - ошибка при выполнении операции
  • esCantDeny - незаконченную операцию соединения нельзя отменить
После установки соединения возникает событие OnConnectComplete типа TConnectErrorEvent, который описан так:
typedef void __fastcall (__closure *TConnectErrorEvent)(TADOConnection* Connection, const _di_Error Error, TEventStatus &EventStatus);
В случае возникновения ошибки в процессе соединения параметр EventStatus будет иметь значение esErrorsOccured, а параметр Error будет содержать объект ошибки ADO.
Объекты ошибки ADO содержат информацию об ошибке, возникшей при выполнении операции над каким-либо объектом ADO.
При разрыве соединения возникает событие OnDisconnect типа TDisconnectEvent, который описан так:
typedef void __fastcall (__closure *TDiscorinectEvent)(TADOConnection* Connection, TEventStatus &EventStatus);
Управление транзакциями осуществляется с помощью методов и свойств компонента ADOConnection.
 
Для запуска транзакции используется функция BeginTrans, возвращающая целое значение, т.е. уровень вложенности новой транзакции. В случае успешного запуска транзакции свойство InTransaction принимает значение true, указывающее на то, что компонент соединения находится в транзакции.
 
Для завершения транзакции и сохранения внесенных изменений в хранилище данных используется метод CommitTrans. При успешном его выполнении свойство InTransaction принимает значение false.
 
Для отката транзакции служит метод RollbackTrans. При его успешном выполнении отменяются все изменения, внесенные в ходе транзакции, а свойство InTransaction принимает значение true.
 
Для управления запуском транзакций, оставшихся незавершенными, служит свойство Attributes типа TXасtAttributes. Оно принимает два значения:
  • xaCommitRetaining - незавершенная транзакция начинается при подтверждении предыдущей транзакции
  • xaAbortRetaining - незавершенная транзакция начинается при отмене предыдущей транзакции
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий