Quem é que nunca precisou , nunca utilizou um Arquivo Ini para carregar os parâmetros de uma conexão no DbExpress . Tudo muito bonito e prático , sem ter que recompilar a aplicação , so alterando o database no Arquivo Ini . Mas não se pode falar de parâmetros de conexão do DbExpress sem entender as propriedades LoadParamsOnConnect , DriveName  , connectionName e os métodos Params.LoadFromFile e LoadParamsFromIniFile … Existe uma mágica por trás disso , e na maioria das vezes fazemos sem entender ou não quereremos entender o que esta passando , bem ao estilo : “ ja que deu certo é assim que eu vou fazer “. E vamos simbora para o mundo dos sem “Tempo” . Mas agora é a hora de mudar isto e evitar dores de cabeça no futuro .

 
No delphi  crie novo projeto e adicione ao Form um Componente TButton. todos os exemplo abaixo poderão estar sendo programados no evento Onclick .
Declare na Uses da secção Interface ou implementation os namespaces  DB, SqlExpr,dbxfirebird; Pois esteremos instanciando e configurando um objeto sqlconexao (tSqlConnection) em rumTime e precisaremos dessas unidades .
 
Obs) Aqui eu estarei utilizando o Delphi2010 .Para uma versão anterior do Delphi2010 a diferença esta no Nome do Driver e da respectiva Unidade que o Driver foi definido . Pode-se fazer todos os Teste escolhendo o DiverName Interbase (Nativo do Delphi) e definindo na Uses a Unidade DBXpress no lugar do dbxfirebird
 
 
Vamos começar com a propriedade LoadParamsOnConnect . Esta propriedade esta no Objecto inspector , e tem um impacto importante neste processo. O Padrão desta propriedade é False , mas quando cetada para True , o SqnConnection carrega para a propriedade params o Driver que esta definido na propriedade ConnectionName . Para isto este Driver deve existir no Arquivo dbxconnections.ini . Veja o exemplo abaixo
 

1)Exemplo com a Propriedade LoadParamsOnConnect cetada em True

var
sqlConexao:TSQLConnection;
begin
sqlConexao:=TSQLConnection.Create(nil);
try
sqlconexao.Close;
sqlconexao.ConnectionName:=‘EMPLOYEE_2_1.FDB’;
sqlconexao.DriverName:=’FIREBIRD’;
sqlconexao.LoadParamsOnConnect:=true;
sqlconexao.LoginPrompt:=false;
sqlconexao.Open;
showmessage(sqlconexao.Params.Text); //faça o Exemplo
finally
sqlconexao.free;
end;

ps)no meu caso particular eu tenho um Driver de Nome [EMPLOYEE_2_1.FDB] no Arquivo  dbxconnections.ini

Perceba que o SqlConexao , procurou no Arquivo DBXCONNECTIOS.INI  a definição do driver EMPLOYEE_2_1.FDB  e carregou na propriedade params do SqlConexao . Alterando agora , esta propriedade para False , será nossa a responsabilidade de passar um Arquivo Ini Válido , para isto iremos carregar este Arquivo ini para a propriedadade params do SqlConexao . Para fazer isto temos os métodos Params.LoadFromFile ou LoadParamsFromIniFile . Há uma diferença sutil e significativa entre eles .  No diretório do exe da Applicação defina um Arquivo Ini com as seguintes configuração <VER Abaixo>. Salve este Arquivo com o Nome de Config.ini . Veja que este Driver tem um Nome , que no caso é [EXEMPLO.FDB] . “Guarde este nome pois iremos precisar dele”

 [EXEMPLO.FDB]
drivername=FIREBIRD
blobsize=-1
commitretain=False
Database=Coloque aqui um diretorio válido
localecode=0000
password=masterkey
rolename=RoleName
sqldialect=3
isolationlevel=ReadCommitted
user_name=sysdba
waitonlocks=True
trim char=False

Definido oArquivo Config.ini vamos as diferenças entre os métodos

2)Utilizando o Params.LoadFromFile

var
sqlConexao:TSQLConnection;
begin
sqlConexao:=TSQLConnection.Create(nil);
try
sqlconexao.Close;
sqlconexao.ConnectionName:=‘Qualquer_Nome’;//não pode deixar em bran
sqlconexao.DriverName:=’FIREBIRD’;
sqlconexao.LoadParamsOnConnect:=False;
sqlconexao.Params.LoadFromFile(‘Config.ini’); //Arquivo Ini
sqlconexao.LoginPrompt:=false;
sqlconexao.Open;
showmessage(sqlconexao.Params.Text);
finally
sqlconexao.free;
end;

 3)Utilizando o LoadParamsFromIniFile(‘config.ini’);

var
sqlConexao:TSQLConnection;
begin
sqlConexao:=TSQLConnection.Create(nil);
try
sqlconexao.Close;
sqlconexao.ConnectionName:=‘Exemplo.FDB‘; //Nome do Driver válido ***
sqlconexao.DriverName:=’FIREBIRD’;
sqlconexao.LoadParamsOnConnect:=False;
sqlconexao.LoadParamsFromIniFile(‘config.ini’);
sqlconexao.LoginPrompt:=false;
sqlconexao.Open;
showmessage(sqlconexao.Params.Text);
finally
sqlconexao.free;
end;

perceba que a diferença é que o método LoadParamsFromIniFile so carrega para o Params se o Nome do Driver , que no nosso caso é [EXEMPLO.FDB] , for válido , Isto é , se existir o Alias [EXEMPLO.FDB]  no Arquivo Config.Ini . Mas atenção , além desse quesito de “segurança” , existe ainda uma caracteristica mais importante neste método , que é a possibilidade de carregar para o params um Driver especifico . Vc pode ter no Arquivo Config.ini vários drivers criados  definidos por vc , e em tempo de execução , escolher qual o driver que vc quer se conectar , so alterando o valor do sqlconexao.ConnectionName. Recapitulando : Assim como no Dbxconnections.ini tem vários drivers definidos , podemos ter também no config.ini varios drivers e escolher qual deles acessar com a propriedade  sqlconexao.ConnectionName e carregando com o método LoadParamsFromIniFile .

Vamos agora entender a propriedade DriveName do SqlConnection . A principio é o nome do Driver que estamos utilizando , porém introduz no params algumas propriedades caracteristica do Driver

Mas internamente qnd se atribui um nome de um Driver para esta propriedade , o delphi no método procedure TSQLConnection.SetDriverName(Value: string);  faz uma série de operaçoes  , atribuições , comparaçoes ,  de modo que ele “recria” o Params do Sqlconnection .

Agora PENSE e tente escolher qual das duas situações é mais indicado

var
sqlConexao:TSQLConnection;
begin
sqlConexao:=TSQLConnection.Create(nil);
try
sqlconexao.Close;
sqlconexao.ConnectionName:=’Exemplo.FDB’;
sqlconexao.LoadParamsOnConnect:=False;
sqlconexao.DriverName:=’FIREBIRD’;//Antes de carregar o Params
sqlconexao.LoadParamsFromIniFile(‘config.ini’);
sqlconexao.LoginPrompt:=false;
sqlconexao.Open;
showmessage(sqlconexao.Params.Text);
finally
sqlconexao.free;
end;

e/ou

var
sqlConexao:TSQLConnection;
begin
sqlConexao:=TSQLConnection.Create(nil);
try
sqlconexao.Close;
sqlconexao.ConnectionName:=’Exemplo.FDB’;
sqlconexao.LoadParamsOnConnect:=False;
sqlconexao.LoadParamsFromIniFile(‘config.ini’);
sqlconexao.DriverName:=’FIREBIRD’;//Depois de carregar o Params
sqlconexao.LoginPrompt:=false;
sqlconexao.Open;
showmessage(sqlconexao.Params.Text);
finally
sqlconexao.free;
end;

 Ao fazermos qlconexao.DriverName:=’FIREBIRD’ após termos carregado o params por um dos métodos anteriores (LoadParamsFromIniFile  , params.LoadFromFile) , estaremos recriando o params e com isto algumas definiçoes serão sobre escritas . Por isto Sugerimos que a atribuição do Nome do Driver Ocorra antes de carregar os parâmetros com o Arquivo Ini , conforme estamos fazendo desde o inicio

Consideraçoes finais:

■A propriedade LoadParamsOnConnect em true o Driver carregado será do Arquivo dbxconnections     
■A propriedade LoadParamsOnConnect em False o Driver carregado será definido por nos e carregado por um dos métodos  (LoadParamsFromIniFile  e/ou params.LoadFromFile)
■A diferença além da segurança entre o método LoadParamsFromIniFile do params.LoadFromFile é que o primeiro temos condiçoes de escolher qual o Driver que queremos acessar , basta definir corretamente a propriedade connectionName
■Por último vimos que o Nome do driver deve vir antes de carregar o params do sqnconection
Com isto terminamos este artigo ,  Lembrando que qualquer dúvida , opinião , manifestação estaremos de prontidão e aptos para receber qualquer tipo de crítica .espero ter sido útil agradeço a paciencia , meu muito obrigado e atê a próxima .

Link Original