Эта статья о различных способах установки соединения. Основа для этой статьи – это официальная документация.
После того как созданы ConnectionDefinitions и определены драйвера DBMS мы можем, собственно, установить соединение. Делается это несколькими способами.
– Самый простой и явный способ это FDConnection1.Connected:=true
-Неявный способ – любое обращение к базе данных. Например, при установке свойства FDQuery.Active в True, при этом свойство FDQuery1.ResourceOptions.AutoConnect должно быть равно True, иначе выпадет исключение.
-Также можно воспользоваться одной из нескольких реализаций метода FDConnection.Open
1 2 3 |
procedure Open(const AConnectionString: String); overload; procedure Open(const AConnectionString: String; const AUserName: String; const APassword: String); overload; procedure Open(const AUserName: String; const APassword: String); overload; |
Примеры из справки для метода FDConnection.Open
1 2 3 4 5 6 |
//First overloaded method: FDConnection1.Open('DriverID=Ora;Database=ORA_920_APP;User_Name=addemo;Password=a'); //Second overloaded method: FDConnection1.Open('DriverID=Ora;Database=ORA_920_APP', 'addemo', 'a'); //Third overloaded method: FDConnection1.Open('addemo', 'a'); |
Примеры показывают разные способы подключения к БД при помощи перегруженного метода FDConnection.Open
Управление ошибками соединения
Существует 2 подхода к управлению ошибками
-Используя метод OnError
-Используя try… except… end…
В документации отображен пример для второго случая
1 2 3 4 5 6 7 8 9 10 11 12 13 |
try FDConnection1.Connected := True; except on E: EAbort do ; // user pressed Cancel button in Login dialog on E: EFDDBEngineException do case E.Kind of ekUserPwdInvalid: ; // user name or password are incorrect ekUserPwdExpired: ; // user password is expired ekServerGone: ; // DBMS is not accessible due to some reason else // other issues end; end; |
Управление LoginPrompt
Итак, если FDConnection1.LoginPrompt=true, тогда при неправильном пароле, например, у нас автоматически будет выскакивать вот это окошко
Есть возможность более профессионально управлять этим окошком, добавив на форму компонент FDGUIxLoginDialog и указав его в свойстве FDConnection.LoginDialog, в этом случае у нас окно будет выглядеть примерно таким образом
При этом можно настраивать видимые параметры в свойстве FDGUIxLoginDialog.VisibleItems, а также число попыток FDGUIxLoginDialog1.LoginRetries
Если установить FDConnection.LoginPrompt:=False, то тогда, в случае неправильного ввода пароля у нас будет работать код из обработки ошибок (см. выше), будет примерно так…
Закрытие соединения
–Явное закрытие соединения через FDConnection.Connected:=False
–Неявное, когда у объекта соединения нет открытых датасетов или активных команд, и когда свойство FDConnection.ResourceOptions.KeepConnection=False