SQLConnection em run time (tempo de execução)

Delphi

03/12/2013

Estou desenvolvendo um aplicativo em camadas no Delphi XE 5.
Meu projeto tem 4 camadas, e na camada que acessa o banco de dados eu crio um SQLConnection e atribuo as propriedades dele, junto dos parâmetros nesse bloco de comandos:

bancoDados := TSQLConnection.Create(nil);
with bancoDados do
begin
Connected := False;
ConnectionName := Self._connectionName;
DriverName := Self._driver;
GetDriverFunc := Self._driverFunc;
LibraryName := Self._libraryName;
VendorLib := Self._vendorLib;
with Params do
begin
Clear;
Add('Database = ' + Self._dataBase);
Add('HostName = ' + Self._hostName);
Add('Password = ' + Self._password);
Add('UserName = ' + Self._userName);
end;
LoadParamsOnConnect := True;
LoginPrompt := False;
end;

Depois disso, abro a conexão com o comando Open. Porém retorna esta mensagem: [img:descricao=Erro no Open do SQLConnection]http://arquivo.devmedia.com.br/forum/imagem/351767-20131203-184112.png[/img]
Parece que os parâmetros que adicionei não são reconhecidos.
Alguém sabe o que fazer? Ou o por que disso acontecer?
Luiz Jr

Luiz Jr

Curtidas 0

Respostas

Vander Ferraz

Vander Ferraz

03/12/2013

De onde você está trazendo os parâmetros?
GOSTEI 0
Luiz Jr

Luiz Jr

03/12/2013

De onde você está trazendo os parâmetros?

De constantes declaradas na seção private de minha Unit
GOSTEI 0
Vander Ferraz

Vander Ferraz

03/12/2013

Cara, tira as constantes de dentro da classe, e veja se resolve.
GOSTEI 0
Luiz Jr

Luiz Jr

03/12/2013

Cara, tira as constantes de dentro da classe, e veja se resolve.

Não adianta, continua anunciando o mesmo problema. Adicionei ";" após cada parâmetro para conferir e o erro persisti.
Alguma ideia?
GOSTEI 0
Deivison Melo

Deivison Melo

03/12/2013

Veja isso aqui!

[url]https://www.devmedia.com.br/forum/configurar-caminho-do-banco-de-dados-atraves-de-arquivo-ini/412679[/url]

Abração e bons códigos!!
GOSTEI 0
Rodrigo Guelf

Rodrigo Guelf

03/12/2013

Já tive esse problema com o Delphi XE e a unica solução foi colocar o componente fisicamente no datamodulo para ele parar de dar esse erro.
GOSTEI 0
Luiz Jr

Luiz Jr

03/12/2013

Essa foi minha solução:

Self.bancoDados := TSQLConnection.Create(nil);
with Self.bancoDados do
begin
KeepConnection := False;
LoadParamsOnConnect := False;
LoginPrompt := False;
ConnectionName := Self._connectionName;
DriverName := Self._driver;
GetDriverFunc := Self._driverFunc;
LibraryName := Self._libraryName;
VendorLib := Self._vendorLib;
with Params do
begin
Values['Hostname'] := Self._hostName;
Values['Database'] := Self._dataBase;
Values['User_Name'] := Self._userName;
Values['Password'] := Self._password;
end;
end;

Nas minhas tentativas eu estava criando parâmetros após ou não limpar os antigos. O que acontece é que o componente já tem esses parâmetro na lista de parâmetros "Params". O que fiz foi dar valor "Value" ao parâmetro de acordo com seu nome "Params['Hostname']:= hostName".
Obrigado pelas respostas e espero que quem teve ou tem este problema possa encontrar a solução em meu post.
GOSTEI 0
POSTAR