Алиасы и переменные строки соединеия могут быть использованы для скрытия параметров соединения или их параметризации (в случае когда необходимо менять соедиение с БД, не затрагивая саму строку соединения).
Параметризация может быть использована только при работе с соединениями через фабрику TDbaCore
, которая может хранить информацию об алиасах и переменных соединения.
Механизм алисов может быть использован только для параметров Host и User (или их аналогов для конкретной реализции СУБД). Для того, чтобы указать соединению, что параметр задается через алиас, необходимо поставить символ @ перед его значением. Тогда, непосредственно перед попыткой открытия, соединение попытается разрешить указанное значение параметра и заменить его реальным значением, хранящимся в списке алиасов фабрики. Значением алиаса является строка соединения, подставляемая в исходную.
В приведенном ниже примере будет создано соединение со строкой параметров 'host = @my_alias'. В момент открытия соединения данная строка будет заменена на 'server = MySql; host = localhost:3306; user = root'.
var Core: TDbaCore Conn: TDbaConnection; ... begin ... Core.ConnAliases.Add('my_alias','server = MySql; host = localhost:3306; user = root',false); Conn := Core.AddConnection('host = @@my_alias');
Замечание: Строки соединения заменяются только в момент передачи параметров на сторону сервера. В самом объекте соединения строка параметров остается неизменной.
Замечание: Строка соединения может содержать также явно заданные параметры. В случае конфликтов множественного задания параметров после подстановки значений алиасов (один и тоже параметр задан дважды), явно заданные значения имеют больший приоритет чем значения из подставляемой строки алиаса.
В приведенном ниже примере в момент открытия соединения на сторону сервера будет передана следующая строка 'server = MySql; host = localhost:3306; user = new_user'.
var Core: TDbaCore Conn: TDbaConnection; ... begin ... Core.ConnAliases.Add('my_alias','server = MySql; host = localhost:3306; user = root',false); Conn := Core.AddConnection('host = @@my_alias; user = @@new_user');