SQLConnection em run time (tempo de execução)
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?
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
Curtidas 0
Respostas
Vander Ferraz
03/12/2013
De onde você está trazendo os parâmetros?
GOSTEI 0
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
03/12/2013
Cara, tira as constantes de dentro da classe, e veja se resolve.
GOSTEI 0
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
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!!
[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
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
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.
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