TADOConnection, DelphiSite
Най-четени
TADOConnection
Връзката към хранилището на данни ADO се отваря и затваря с свойство Connected: Boolean; или методи процедура Отворено; претоварване; процедура Openfconst UserID: WideString; const Парола: WideString); претоварване; и процедура Затваряне; Отвореният метод може да се претовари, когато трябва да използва отдалечена или локална връзка. За отдалечена връзка се използва опцията с параметрите UserID и Password. Преди и след отваряне и затваряне на връзката, разработчикът може да използва съответните стандартни методи за обработка на събития: свойство BeforeConnect: TNotifyEvent; свойство BeforeDisconnect: TNotifyEvent; свойство AfterConnect: TNotifyEvent; свойство AfterDisconnect: TNotifyEvent; В допълнение, компонентът има допълнителни методи за обработка. След получаване на потвърждение от доставчика, че връзката ще бъде отворена, преди действителното й отваряне, методът TWillConnectEvent = procedure(Connection: ; var Connectionstring, UserlD, Password: WideString; var ConnectOptions: TConnectOption; var EventStatus: TEventStatus) на обекта; свойство OnWillConnect: TWillConnectEvent; Параметърът Connection съдържа указател към компонента, който е извикал манипулатора. Параметрите Connectionstring, userID и Password определят низа на параметрите, потребителското име и паролата. Връзката може да бъде синхронна или асинхронна, което се определя от параметъра ConnectOptions на типа TConnectOption: тип TConnectOption = (coConnectUnspecified, coAsyncConnect); coConnectunspecified - синхронната връзка винаги чака резултата от последната заявка; coAsyncConnect - асинхронна връзка може да прави нови заявки, без да чака отговор отпредишни заявки. Накрая, параметърът Eventstatus ви позволява да определите успеха на изпратената заявка за връзка: тип TEventStatus = (esOK, esErrorsOccured, esCantDeny, esCancel, esUnwantedEvent); esOK — заявката за връзка завършена успешно; esErrorsOccured — възникна грешка при изпълнение на заявката; esCantDeny - връзката не може да бъде прекъсната; esCancel — връзката е прекратена преди отваряне; esUnwantedEvent е вътрешен флаг на ADO. Например, в случай на успешна връзка, можете да изберете синхронния режим на компонента: procedure TForml.ADOConnectionWillConnect(Connection: ; var ConnectionString, UserlD, Password: WideString; var ConnectOptions: TConnectOption; var Eventstatus: TEventStatus); започнете ако Eventstatus = esOK тогава ConnectOptions := coConnectunspecified; край; Между другото, параметърът синхронен/асинхронен може също да бъде зададен с помощта на свойството ConnectOptions ConnectOptions: TConnectOption; След като отворите връзка, можете да използвате метода на манипулатора, за да изпълните свой собствен код TConnectErrorEvent = procedure(Connection: ; Error: Error; var Eventstatus: TEventStatus) of object; свойство OnConnectComplete: TConnectErrorEvent; Тук, ако възникне грешка при отваряне на връзката, параметърът Eventstatus ще бъде esErrorsOccured, а параметърът Error ще съдържа ADO обект за грешка. Сега нека да преминем към спомагателните свойства и методи на компонента, който осигурява връзката. За да ограничите времето за отваряне на връзката за бавни комуникационни канали, използвайте свойството свойство ConnectionTimeout: Integer; Задаване на времето за изчакване за отваряне на връзката в секунди. По подразбиране е 15 секунди. Възможно е също така да се определи как даден компонент реагира на неизползвансъединение. Ако нито един активен компонент не е свързан чрез връзката, свойство KeepConnection: Boolean; Настройка на True поддържа връзката отворена. В противен случай, след затваряне на последния свързан ADO компонент, връзката се затваря. Ако е необходимо, доставчикът на ADO връзка се определя директно от свойството Provider: WideString; Името на източника на данни по подразбиране се задава от свойството DefaultDatabase: WideString; Но ако същият параметър е посочен в низа за връзка, тогава той замества стойността на свойството. Ако е необходимо, директният достъп до обекта за свързване на OLE DB се осигурява от свойството ConnectionObject: _Connection; Когато отваряте връзка, трябва да въведете потребителското име и паролата. Появата на стандартния диалог се контролира от свойството LoginPrompt: Boolean; Без този диалог можете да използвате свойството Connectionstring, отворения метод (вижте по-горе) или метода на манипулатора, за да зададете тези параметри тип TLoginEvent = procedure(Sender:TObject; Username, Password: string) на обекта; свойство OnLogin: TLoginEvent; Свойство тип TConnectMode = (cmUnknown, cmRead, cmWrite, cinReadWrite, cmShareDenyRead, cmShareDenyWrite, cmShareExclusive, cmShareDenyNone); Режим на свойство: TConnectMode; задава наличните операции за връзката: cmUnknown — разрешението е неизвестно или не може да бъде зададено; cmRead - разрешение за четене; cmwrite - разрешение за писане; cmReadWrite - разрешение за четене и запис; cmshareDenyRead - разрешението за четене за други връзки е отказано; cmshareoenywrite - разрешението за запис за други връзки е отказано; cmShareExciusive - разрешението за отваряне за други връзки е забранено; cmshareDenyNone - отворете другивръзките с разрешения са забранени. Достъп до свързани набори от данни и ADO команди
Компонентът TADOconnection осигурява достъп до всички компоненти, които го използват за достъп до хранилището на данни на ADO. Всички набори от данни, отворени по този начин, са достъпни чрез индексираното свойство свойство DataSets[Index: Integer]: TCustomADODataSet; Всеки елемент от този списък съдържа манипулатор на ADO компонент за достъп до данни (тип TCustomADODataSet). Общият брой свързани компоненти на набор от данни се връща от свойството DataSetCount: Integer; За тези компоненти можете централно да зададете вида на курсора, който да използвате, като използвате свойството type TCursorLocation = (clUseServer, clUseClient); свойство CursorLocation: TCursorLocation; Стойността clUseClient определя локален курсор от страната на клиента, който ви позволява да извършвате всякакви операции с данни, включително тези, които не се поддържат от сървъра. Стойността cIUseServer указва курсор на сървъра, който реализира само възможностите на сървъра, но осигурява бърза обработка на големи масиви от данни. Например: for i := 0 to ADOConnection.DataSetCount - 1 do begin if ADOConnection.DataSets[i].Active = True then ADOConnection.DataSets[i].Close; ADOConnection.DataSets[i].CursorLocation := clUseClient; край; В допълнение към наборите от данни, компонентът осигурява изпълнение на ADO команди. ADO команда е капсулирана от специален компонент TADOCommand, който е обсъден по-долу. Всички ADO команди, които работят с хранилището на данни чрез тази връзка, са достъпни за управление чрез индексираното свойство свойство Команди[Индекс: Цяло число]: TADOCommand Всеки елемент от този списък е екземпляр на класа TADOCommand. Общият брой налични команди се връща от свойството CommandCount: Integer Например, веднага след отваряне на връзката, можете да изпълните всички свързани ADO команди, като по този начин реализирате нещо като скрипт: procedure TForml.ADOConnectionConnectComplete(Connection: ; const Error: Error; var EventStatus: TEventStatus); var i, ErrorCnt: Integer; започнете ако EventStatus = esOK след това за i := 0 до ADOConnection.CommandCount - 1 направете опитайте ако ADOConnection.Commands[i].CommandText <> след това ADOConnection.Commands[i].Execute; освен на E: Exception do Inc(ErrorCnt); край; край; Въпреки това, даден компонент може да изпълнява ADO команди сам, без помощта на други компоненти. Претовареният метод function Execute(const CommandText: W > procedure Execute(const CommandText: WideString; var RecordsAffected: Integer; ExecuteOptions: TExecuteOptions = [eoExecuteNoRecords]);overload; команден текст Параметърът RecordsAffected връща броя на записите, обработени от командата (ако има такива) Para метър тип TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords); TExecuteOptions = набор от TExecuteOption; задава условията за изпълнение на командата: чрез сигнализиране за завършване на командата, когато пристигне); eoAsy ncFetch - командата извлича необходимите записи и асинхронно; eoAsyncFetchNonBlocking - командата извлича необходимите записи също асинхронно, но създадената нишка не се блокира; eoExecuteNoRecords - Командата не трябва да връща записи. Ако източникът на данни е получил команда за изпълнение и я е докладвал на връзката, методът на манипулатора се извиква TWillExecuteEvent = procedure(Connection: ; var CommandText: WideString; var CursorType: TCursorType; var LockType: TADOLockType; var ExecuteOptions: TExecuteOptions; var Event Състояние: TEventStatus; const Команда: _Command; con st Recordset: _Recordset) на обект; свойство OnWillExecute: TWillExecuteEvent; След като командата бъде изпълнена, методът на манипулатора се извиква TExecuteCompleteEvent = procedure(Connection: ; RecordsAffected: Integer; const Error: Error; var EventStatus: TEventStatus; const Command: _Command; const Recordset: _Recordset) на обекта; свойство OnExecuteComplete: TExecuteCompleteEvent;
ADO Error Object Всички грешки по време на изпълнение, които възникват при отворена връзка, се съхраняват в специален ADO обект, който капсулира колекция от съобщения за грешки. Достъпът до обекта е възможен чрез свойството свойство Errors: Errors;
Компонентът TADOconnection ви позволява да изпълнявате транзакции. Методи function BeginTrans: Integer; procedureCommitTrans; процедура RollbackTrans; предоставете съответно началото, ангажирането и връщането назад на транзакцията. Методи на манипулатора TBeginTransCompleteEvent = procedure(Connection: ; TransactionLevel: Integer; const Error: Error; var EventStatus: TEventStatus) на обект; свойство OnBeginTransComplete: TBeginTransCompleteEvent; TConnectErrorEvent = процедура (Връзка: ; Грешка: Грешка; var EventStatus: TEventStatus) на обект; свойство OnCornmitTransComplete: TConnectErrorEvent; се извикват след стартиране и извършване на транзакция. Свойство тип TIsolationLevel = (ilUnspecified, ilChaos, ilReadUncommitted,ilBrowse, ilCursorStability, ilReadCorranitted, ilRepeatableRead, ilSerializable, illsolated); свойство IsolationLevel: TIsolationLevel; позволява да зададете нивото на изолация на транзакцията: IlUnspecifed — нивото на изолация не е зададено; Ilichaos - промените в по-сигурни транзакции не се презаписват от тази транзакция; IlReadUncommitted - видими са незавършени промени на други транзакции; IlBrowse — видими са незавършени промени на други транзакции; IlCursorStability - промените на други транзакции са видими само след извършване; IlReadCommitted - промените в други транзакции са видими само след извършване; IlRepeatableRead - промените на други транзакции не се виждат, но са налични при актуализиране на данните; ISerializable - транзакцията се изпълнява изолирано от други транзакции; Изолиран - транзакцията се извършва изолирано от други транзакции. Свойство TXactAttribute = (xaCommitRetaining, xaAbortRetaining); Атрибути на свойство: TXactAttributes; задава начин за управление на транзакциите, когато те са ангажирани и върнати назад: xaCommitRetaining — след извършване на нова транзакция автоматично се стартира изпълнението на нова; xaAbortRetaining - след връщане назад на следващата транзакция, автоматично се стартира изпълнението на нова.