Arquivo Ini - Conexao Mysql
Boa Tarde a Todos.
Estou eu aqui de novo com mais uma duvida.
Pesquisei em vários sites e nada de achar algo sobre arquivos ini para o MySQL.
Eu utilizo o Delphi xe e MySQL 5.1, mas todos que eu acho ou tem o zeos lib ou é do firebird....
Alguém por favor pode me ajudar a fazer um arquivo ini de conexão para o MySQL?
Obrigado desde já
Estou eu aqui de novo com mais uma duvida.
Pesquisei em vários sites e nada de achar algo sobre arquivos ini para o MySQL.
Eu utilizo o Delphi xe e MySQL 5.1, mas todos que eu acho ou tem o zeos lib ou é do firebird....
Alguém por favor pode me ajudar a fazer um arquivo ini de conexão para o MySQL?
Obrigado desde já
Rodolfo Silva
Curtidas 0
Respostas
William
12/02/2012
Segue um exemplo:
[Conexao]
Hostname=LOCALHOST
Port=3306
Database=localhost:Nome_BD
Password=011224
user_name=root
drivername=MySQL
LibraryName=dbxmys.dll
VendorLib=libmysql.dll
ConnectionName=MYSQLCONNECTION
GetDriveFunc=getSQLDriverMySQL
qualquer dúvida estamos aí ...
[Conexao]
Hostname=LOCALHOST
Port=3306
Database=localhost:Nome_BD
Password=011224
user_name=root
drivername=MySQL
LibraryName=dbxmys.dll
VendorLib=libmysql.dll
ConnectionName=MYSQLCONNECTION
GetDriveFunc=getSQLDriverMySQL
qualquer dúvida estamos aí ...
GOSTEI 0
Rodolfo Silva
12/02/2012
Segue um exemplo:
[Conexao]
Hostname=LOCALHOST
Port=3306
Database=localhost:Nome_BD
Password=011224
user_name=root
drivername=MySQL
LibraryName=dbxmys.dll
VendorLib=libmysql.dll
ConnectionName=MYSQLCONNECTION
GetDriveFunc=getSQLDriverMySQL
qualquer dúvida estamos aí ...
[Conexao]
Hostname=LOCALHOST
Port=3306
Database=localhost:Nome_BD
Password=011224
user_name=root
drivername=MySQL
LibraryName=dbxmys.dll
VendorLib=libmysql.dll
ConnectionName=MYSQLCONNECTION
GetDriveFunc=getSQLDriverMySQL
qualquer dúvida estamos aí ...
ok amigo, obrigado, mas eu queria saber também como eu associo este arquivo ini ao Delphi ou ao SqlConection do data module.
Obrigado
GOSTEI 0
William
12/02/2012
Segue um link para vc aprender a trabalhar com arquivos INI:
http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=1295
Depois disso é carregar as informações no SQLConnection tipo:
Database:= database
e por aí vai ....
http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=1295
Depois disso é carregar as informações no SQLConnection tipo:
Database:= database
e por aí vai ....
GOSTEI 0
Rodolfo Silva
12/02/2012
Segue um link para vc aprender a trabalhar com arquivos INI:
http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=1295
Depois disso é carregar as informações no SQLConnection tipo:
Database:= database
e por aí vai ....
http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=1295
Depois disso é carregar as informações no SQLConnection tipo:
Database:= database
e por aí vai ....
desculpa amigo, mas nao funcionou
GOSTEI 0
William
12/02/2012
Posta a msg de erro.
No momento esto sem delphi, mas após as 19:00hs posto um exemplo.
No momento esto sem delphi, mas após as 19:00hs posto um exemplo.
GOSTEI 0
Rodolfo Silva
12/02/2012
Posta a msg de erro.
No momento esto sem delphi, mas após as 19:00hs posto um exemplo.
No momento esto sem delphi, mas após as 19:00hs posto um exemplo.
ok amigo, fico no aguardo do exemplo, vai ser de grande ajuda a mim e a todos do fórum.
Obrigado
GOSTEI 0
Deivison Melo
12/02/2012
Seguem abaixo exemplos usados com a conexão dbexpress usando o banco de dados firebird...
Faça a adaptação para o MySQL a lógica é a mesma...
(*************************************************************************************************************************)
//Procedure para gravar arquivo ini usado no login
//inicio
procedure GravaIni(Arquivo, Sessao, Subsessao, valor: string);
var
ArqIni: TIniFile;
begin
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
ArqIni.WriteString(Sessao, Subsessao, valor);
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Funcao para ler arquivo ini usado no login
//inicio
function LerIni(Arquivo, Sessao, Subsessao: string): string;
var
ArqIni: TIniFile;
sDirAplicacao: string;
begin
sDirAplicacao := ExtractFilePath(ParamStr(0));
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
Result := ArqIni.ReadString(Sessao, Subsessao, );
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Lendo o arquivo ini criado (isso no create do formulário onde contém os objetos dbware´s (conexão com banco))
//inicio
begin
if not FileExists(sga.ini) then //verificando se o arquivo *.ini existe (usei o nome sga, mas o nome que você pesquisa é o mesmo nome criado)
ChamaForm(TfrmConfiguracao, frmConfiguracao) // essa procedure chama form foi feita para chamar os formularios, disponibilizarei aqui tb!
else
begin
try
with ConexaoDB do //nome do objeto dbconection do dbexpress
begin
Connected := False;
connectionname := PortoBello; //Nome do alias para conexão
drivername := interbase; //mesmo usando o firebird colocar aqui interbase, isso foi feito em delphi 7
getdriverfunc := getSQLDriverINTERBASE;
libraryname := dbexpint.dll;
params.clear;
params.add(drivername=interbase);
params.add(database= + LerInI(sga.ini, DB, caminho));
params.add(rolename=rolename);
params.add(user_name= + LerInI(sga.ini, DB, usuario));
params.add(password= + LerInI(sga.ini, DB, senha));
params.add(servercharset=);
params.add(sqldialect=3);
params.add(blobsize=-1);
params.add(commitretain=false);
params.add(waitonlocks=true);
params.add(errorresourcefile=);
params.add(localecode=0000);
params.add(interbase transisolation=readcommited);
params.add(trim char=false);
vendorlib := gds32.dll;
Connected := true;
end;
except
raise Exception.Create(Verifique se as configurações do arquivo sga.ini estão corretas!);
end;
end;
end;
//fim
(*************************************************************************************************************************)
//Chamar formulário
//inicio
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
begin
{método para chamar form}
Application.CreateForm(aClasseForm, aForm);
try
aForm.ShowModal;
finally
aForm.Free;
end;
end;
//fim
(*************************************************************************************************************************)
forte abraço!
Emanoel Deivison
Recife - PE
Faça a adaptação para o MySQL a lógica é a mesma...
(*************************************************************************************************************************)
//Procedure para gravar arquivo ini usado no login
//inicio
procedure GravaIni(Arquivo, Sessao, Subsessao, valor: string);
var
ArqIni: TIniFile;
begin
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
ArqIni.WriteString(Sessao, Subsessao, valor);
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Funcao para ler arquivo ini usado no login
//inicio
function LerIni(Arquivo, Sessao, Subsessao: string): string;
var
ArqIni: TIniFile;
sDirAplicacao: string;
begin
sDirAplicacao := ExtractFilePath(ParamStr(0));
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
Result := ArqIni.ReadString(Sessao, Subsessao, );
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Lendo o arquivo ini criado (isso no create do formulário onde contém os objetos dbware´s (conexão com banco))
//inicio
begin
if not FileExists(sga.ini) then //verificando se o arquivo *.ini existe (usei o nome sga, mas o nome que você pesquisa é o mesmo nome criado)
ChamaForm(TfrmConfiguracao, frmConfiguracao) // essa procedure chama form foi feita para chamar os formularios, disponibilizarei aqui tb!
else
begin
try
with ConexaoDB do //nome do objeto dbconection do dbexpress
begin
Connected := False;
connectionname := PortoBello; //Nome do alias para conexão
drivername := interbase; //mesmo usando o firebird colocar aqui interbase, isso foi feito em delphi 7
getdriverfunc := getSQLDriverINTERBASE;
libraryname := dbexpint.dll;
params.clear;
params.add(drivername=interbase);
params.add(database= + LerInI(sga.ini, DB, caminho));
params.add(rolename=rolename);
params.add(user_name= + LerInI(sga.ini, DB, usuario));
params.add(password= + LerInI(sga.ini, DB, senha));
params.add(servercharset=);
params.add(sqldialect=3);
params.add(blobsize=-1);
params.add(commitretain=false);
params.add(waitonlocks=true);
params.add(errorresourcefile=);
params.add(localecode=0000);
params.add(interbase transisolation=readcommited);
params.add(trim char=false);
vendorlib := gds32.dll;
Connected := true;
end;
except
raise Exception.Create(Verifique se as configurações do arquivo sga.ini estão corretas!);
end;
end;
end;
//fim
(*************************************************************************************************************************)
//Chamar formulário
//inicio
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
begin
{método para chamar form}
Application.CreateForm(aClasseForm, aForm);
try
aForm.ShowModal;
finally
aForm.Free;
end;
end;
//fim
(*************************************************************************************************************************)
forte abraço!
Emanoel Deivison
Recife - PE
GOSTEI 0
Rodolfo Silva
12/02/2012
Boa Tarde amigo, olha eu usei o seu codigo e deu erro.
mas no caso eu usei este mas esta dando erro tambem.
function lerIni(sInifile, sSecao, sChave : String) : String;
var
Ini : TIniFile;
begin
Ini := TInifile.Create(ExtractFilePath(ParamStr(0)) + sInifile);
try
Result := Ini.ReadString(sSecao, sChave, );
finally
Ini.Free
end;
end;
**********************************************************************
procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
DM.conexao.Close;
try
DM.conexao.Params.Values[drivername]:= lerIni(config.ini, drivername);
DM.conexao.Params.Values[Database]:= lerIni(config.ini, Database);
DM.conexao.Params.Values[HostName]:= lerIni(config.ini, HostName);
DM.conexao.Params.Values[Password]:= lerIni(config.ini, Password);
DM.conexao.Params.Values[User_name]:= lerIni(config.ini, User_name);
DM.conexao.Params.Values[Port]:= lerIni(config.ini, Port);
DM.conexao.Open;
except
on EDatabaseError do
begin
MessageDlg(Não foi possível se conectar ao Servidor, mtError, [mbOk], 0);
Application.Terminate;
end;
end;
end;
Pode me ajudar novamente?
Obrigado
mas no caso eu usei este mas esta dando erro tambem.
function lerIni(sInifile, sSecao, sChave : String) : String;
var
Ini : TIniFile;
begin
Ini := TInifile.Create(ExtractFilePath(ParamStr(0)) + sInifile);
try
Result := Ini.ReadString(sSecao, sChave, );
finally
Ini.Free
end;
end;
**********************************************************************
procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
DM.conexao.Close;
try
DM.conexao.Params.Values[drivername]:= lerIni(config.ini, drivername);
DM.conexao.Params.Values[Database]:= lerIni(config.ini, Database);
DM.conexao.Params.Values[HostName]:= lerIni(config.ini, HostName);
DM.conexao.Params.Values[Password]:= lerIni(config.ini, Password);
DM.conexao.Params.Values[User_name]:= lerIni(config.ini, User_name);
DM.conexao.Params.Values[Port]:= lerIni(config.ini, Port);
DM.conexao.Open;
except
on EDatabaseError do
begin
MessageDlg(Não foi possível se conectar ao Servidor, mtError, [mbOk], 0);
Application.Terminate;
end;
end;
end;
Pode me ajudar novamente?
Obrigado
GOSTEI 0
Joel Rodrigues
12/02/2012
Qual o erro exatamente?
Repare que a função LerINI recebe três parâmetros e na chamada você está passando apenas dois. Aparentemente você está passando o nome do arquivo e da chave que deseja ler, mas está esquecendo da sessão. Veja na estrutura do seu arquivo (vide exemplos dados anteriormente) qual a seção e chaves corretas.
Quando ocorrer um erro, não deixe de nos informar qual erro ocorreu, facilitará e muito.
Boa sorte.
Repare que a função LerINI recebe três parâmetros e na chamada você está passando apenas dois. Aparentemente você está passando o nome do arquivo e da chave que deseja ler, mas está esquecendo da sessão. Veja na estrutura do seu arquivo (vide exemplos dados anteriormente) qual a seção e chaves corretas.
Quando ocorrer um erro, não deixe de nos informar qual erro ocorreu, facilitará e muito.
Boa sorte.
GOSTEI 0
Rodolfo Silva
12/02/2012
Realmente joel, obrigado pela observação, mas mesmo assim ainda nao deu, ele simplesmente nao conecta quando eu coloco o exe em outro pc em rede que eu tenho aqui, ele procura o localhost e nao o ip que coloquei no arquivo config.
achei este outro codigo, aparentemente ele funciona, coloquei ele no oncreate do meu Dm e quando eu edito o nome localhost na seção ip, para outro nome ele da erro, e quando volto ao normal ele funciona, até aqui tudo bem.
mas quando eu passo ele para outro pc e coloco o ip do meu servidor, ele continuar tentando buscar o localhost..
segue o codigo:
****************************************
procedure TDM.conectaIni;
var
x:integer;
arq:TextFile;
linha,ip,user,password, host:string;
begin
AssignFile (arq,C:\SysClin\App\bin\config.ini);
Reset(Arq);
x:=0;
while not eof (arq) do
begin
ReadLn(arq,linha);
if(x = 1)then
ip:= linha;
if(x = 3)then
user:= linha;
if(x = 5)then
password:= linha;
if(x = 7)then
host:= linha;
x:=x+1;
end;
CloseFile(arq);
Conexao.Params.Values[HostName] := ip;
Conexao.Params.Values[Database] := bd_sys;
Conexao.Params.Values[USER_NAME] := root;
Conexao.Params.Values[Password] := 12345;
try
Conexao.Connected := true;
except
end;
end;
************************************************************************
alguma ideia de como resolver?
Desculpa pela amolação, é que só falta isto para terminar o programa.
Obrigado pela Paciência
achei este outro codigo, aparentemente ele funciona, coloquei ele no oncreate do meu Dm e quando eu edito o nome localhost na seção ip, para outro nome ele da erro, e quando volto ao normal ele funciona, até aqui tudo bem.
mas quando eu passo ele para outro pc e coloco o ip do meu servidor, ele continuar tentando buscar o localhost..
segue o codigo:
****************************************
procedure TDM.conectaIni;
var
x:integer;
arq:TextFile;
linha,ip,user,password, host:string;
begin
AssignFile (arq,C:\SysClin\App\bin\config.ini);
Reset(Arq);
x:=0;
while not eof (arq) do
begin
ReadLn(arq,linha);
if(x = 1)then
ip:= linha;
if(x = 3)then
user:= linha;
if(x = 5)then
password:= linha;
if(x = 7)then
host:= linha;
x:=x+1;
end;
CloseFile(arq);
Conexao.Params.Values[HostName] := ip;
Conexao.Params.Values[Database] := bd_sys;
Conexao.Params.Values[USER_NAME] := root;
Conexao.Params.Values[Password] := 12345;
try
Conexao.Connected := true;
except
end;
end;
************************************************************************
alguma ideia de como resolver?
Desculpa pela amolação, é que só falta isto para terminar o programa.
Obrigado pela Paciência
GOSTEI 0
Rodolfo Silva
12/02/2012
Realmente joel, obrigado pela observação, mas mesmo assim ainda nao deu, ele simplesmente nao conecta quando eu coloco o exe em outro pc em rede que eu tenho aqui, ele procura o localhost e nao o ip que coloquei no arquivo config.
achei este outro codigo, aparentemente ele funciona, coloquei ele no oncreate do meu Dm e quando eu edito o nome localhost na seção ip, para outro nome ele da erro, e quando volto ao normal ele funciona, até aqui tudo bem.
mas quando eu passo ele para outro pc e coloco o ip do meu servidor, ele continuar tentando buscar o localhost..
segue o codigo:
****************************************
procedure TDM.conectaIni;
var
x:integer;
arq:TextFile;
linha,ip,user,password, host:string;
begin
AssignFile (arq,C:\SysClin\App\bin\config.ini);
Reset(Arq);
x:=0;
while not eof (arq) do
begin
ReadLn(arq,linha);
if(x = 1)then
ip:= linha;
if(x = 3)then
user:= linha;
if(x = 5)then
password:= linha;
if(x = 7)then
host:= linha;
x:=x+1;
end;
CloseFile(arq);
Conexao.Params.Values[HostName] := ip;
Conexao.Params.Values[Database] := bd_sys;
Conexao.Params.Values[USER_NAME] := root;
Conexao.Params.Values[Password] := 12345;
try
Conexao.Connected := true;
except
end;
end;
************************************************************************
alguma ideia de como resolver?
Desculpa pela amolação, é que só falta isto para terminar o programa.
Obrigado pela Paciência
achei este outro codigo, aparentemente ele funciona, coloquei ele no oncreate do meu Dm e quando eu edito o nome localhost na seção ip, para outro nome ele da erro, e quando volto ao normal ele funciona, até aqui tudo bem.
mas quando eu passo ele para outro pc e coloco o ip do meu servidor, ele continuar tentando buscar o localhost..
segue o codigo:
****************************************
procedure TDM.conectaIni;
var
x:integer;
arq:TextFile;
linha,ip,user,password, host:string;
begin
AssignFile (arq,C:\SysClin\App\bin\config.ini);
Reset(Arq);
x:=0;
while not eof (arq) do
begin
ReadLn(arq,linha);
if(x = 1)then
ip:= linha;
if(x = 3)then
user:= linha;
if(x = 5)then
password:= linha;
if(x = 7)then
host:= linha;
x:=x+1;
end;
CloseFile(arq);
Conexao.Params.Values[HostName] := ip;
Conexao.Params.Values[Database] := bd_sys;
Conexao.Params.Values[USER_NAME] := root;
Conexao.Params.Values[Password] := 12345;
try
Conexao.Connected := true;
except
end;
end;
************************************************************************
alguma ideia de como resolver?
Desculpa pela amolação, é que só falta isto para terminar o programa.
Obrigado pela Paciência
Ah e é esta a estrutura do arquivo ini.
[IP]
10.0.0.101
[HOST]
RODOLFONOT-PC
obrigado
GOSTEI 0
Joel Rodrigues
12/02/2012
No seu arquivo INI, você nomeou a seção mas não nomeou a chave. A estrutura deve ser semelhante a essa:
[CONFIGURACOES]
IP = 10.0.0.101
HOST = RODOLFO-PC
[SECAO]
Chave = valor
Altere seu arquivo e utilize aquele método para ler esse arquivo. Ah, insista na leitura correta do arquivo INI, tente não usar esse outro método. Se existe o INI pra isso, por que usar o que eu diria ser uma gambiarra?
Boa sorte.
[CONFIGURACOES]
IP = 10.0.0.101
HOST = RODOLFO-PC
[SECAO]
Chave = valor
Altere seu arquivo e utilize aquele método para ler esse arquivo. Ah, insista na leitura correta do arquivo INI, tente não usar esse outro método. Se existe o INI pra isso, por que usar o que eu diria ser uma gambiarra?
Boa sorte.
GOSTEI 0
Rodolfo Silva
12/02/2012
No seu arquivo INI, você nomeou a seção mas não nomeou a chave. A estrutura deve ser semelhante a essa:
[CONFIGURACOES]
IP = 10.0.0.101
HOST = RODOLFO-PC
[SECAO]
Chave = valor
Altere seu arquivo e utilize aquele método para ler esse arquivo. Ah, insista na leitura correta do arquivo INI, tente não usar esse outro método. Se existe o INI pra isso, por que usar o que eu diria ser uma gambiarra?
Boa sorte.
[CONFIGURACOES]
IP = 10.0.0.101
HOST = RODOLFO-PC
[SECAO]
Chave = valor
Altere seu arquivo e utilize aquele método para ler esse arquivo. Ah, insista na leitura correta do arquivo INI, tente não usar esse outro método. Se existe o INI pra isso, por que usar o que eu diria ser uma gambiarra?
Boa sorte.
Alterei o Ini mas continua na mesma, só lê o localhost.
Mas esse ultimo codigo que te enviei esta correto?
var
x:integer;
arq:TextFile;
linha,ip,user,password, host:string;
begin
AssignFile (arq,C:\SysClin\App\bin\config.ini);
Reset(Arq);
x:=0;
while not eof (arq) do
begin
ReadLn(arq,linha);
if(x = 1)then
ip:= linha;
if(x = 3)then
user:= linha;
if(x = 5)then
password:= linha;
if(x = 7)then
host:= linha;
x:=x+1;
end;
CloseFile(arq);
Conexao.Params.Values[HostName] := ip;
Conexao.Params.Values[Database] := bd_sysclin;
Conexao.Params.Values[USER_NAME] := root;
Conexao.Params.Values[Password] := 123;
try
Conexao.Connected := true;
except
end;
end;
voce teria outro exemplo?
Obrigado pela paciencia
GOSTEI 0
William
12/02/2012
Estou postando um exemplo bem simples, testei e funcionou legal...
//Esse evento é disparado antes da conexão do SQLConnection
procedure TfrmPrincipal.conexaoINIBeforeConnect(Sender: TObject);
begin
try
conexaoINI.Connected := false;
conexaoINI.Params.Clear;
conexaoINI.ConnectionName:= Conn.ConnectionName;
conexaoINI.ParamsLoaded := True;
conexaoINI.DriverName := Conn.DriverName;
conexaoINI.GetDriverFunc := Conn.GetDriveFunc;
conexaoINI.LibraryName := Conn.LibraryName;
conexaoINI.VendorLib := Conn.LibraryName;
conexaoINI.Params.Add(hostname= + Conn.Hostname);
conexaoINI.Params.Add(user_name= + Conn.User);
conexaoINI.Params.Add(password= + Conn.Password);
conexaoINI.Params.Add(port= + IntToStr(Conn.Porta));
conexaoINI.Params.Add(Database= + conn.Database);
Except
on E:Exception do
ShowMessage(Erro ao acessar banco de dados!#13#10 + E.Message);
end;
end;
Nesse caso escrevi uma classe de conexão pra ler o INI mas não há necessidade disso, o conteúdo do INI postei no inicio poste, repare no nome dos atributos e compare com ini.
//Essaé função de leitura do INI
procedure TConexao.LeINI;
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create(FINI);
try
FHostname := ArqIni.ReadString (Conexao_MySQL, Hostname , );
FPorta := ArqIni.ReadInteger(Conexao_MySQL, Porta , 0 );
FDatabase := ArqIni.ReadString (Conexao_MySQL, Database , );
FPassword := ArqIni.ReadString (Conexao_MySQL, Password , );
FUser := ArqIni.ReadString (Conexao_MySQL, user_name , );
FVendorLib := ArqIni.ReadString (Conexao_MySQL, VendorLib , );
FLibraryName := ArqIni.ReadString (Conexao_MySQL, LibraryName , );
FGetDriveFunc := ArqIni.ReadString (Conexao_MySQL, GetDriveFunc , );
FDriverName := ArqIni.ReadString (Conexao_MySQL, drivername , );
FConnectionName := ArqIni.ReadString (Conexao_MySQL, ConnectionName, );
finally
ArqIni.Free;
end;
end;
//Esse evento é disparado antes da conexão do SQLConnection
procedure TfrmPrincipal.conexaoINIBeforeConnect(Sender: TObject);
begin
try
conexaoINI.Connected := false;
conexaoINI.Params.Clear;
conexaoINI.ConnectionName:= Conn.ConnectionName;
conexaoINI.ParamsLoaded := True;
conexaoINI.DriverName := Conn.DriverName;
conexaoINI.GetDriverFunc := Conn.GetDriveFunc;
conexaoINI.LibraryName := Conn.LibraryName;
conexaoINI.VendorLib := Conn.LibraryName;
conexaoINI.Params.Add(hostname= + Conn.Hostname);
conexaoINI.Params.Add(user_name= + Conn.User);
conexaoINI.Params.Add(password= + Conn.Password);
conexaoINI.Params.Add(port= + IntToStr(Conn.Porta));
conexaoINI.Params.Add(Database= + conn.Database);
Except
on E:Exception do
ShowMessage(Erro ao acessar banco de dados!#13#10 + E.Message);
end;
end;
Nesse caso escrevi uma classe de conexão pra ler o INI mas não há necessidade disso, o conteúdo do INI postei no inicio poste, repare no nome dos atributos e compare com ini.
//Essaé função de leitura do INI
procedure TConexao.LeINI;
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create(FINI);
try
FHostname := ArqIni.ReadString (Conexao_MySQL, Hostname , );
FPorta := ArqIni.ReadInteger(Conexao_MySQL, Porta , 0 );
FDatabase := ArqIni.ReadString (Conexao_MySQL, Database , );
FPassword := ArqIni.ReadString (Conexao_MySQL, Password , );
FUser := ArqIni.ReadString (Conexao_MySQL, user_name , );
FVendorLib := ArqIni.ReadString (Conexao_MySQL, VendorLib , );
FLibraryName := ArqIni.ReadString (Conexao_MySQL, LibraryName , );
FGetDriveFunc := ArqIni.ReadString (Conexao_MySQL, GetDriveFunc , );
FDriverName := ArqIni.ReadString (Conexao_MySQL, drivername , );
FConnectionName := ArqIni.ReadString (Conexao_MySQL, ConnectionName, );
finally
ArqIni.Free;
end;
end;
GOSTEI 0
Rodolfo Silva
12/02/2012
Estou postando um exemplo bem simples, testei e funcionou legal...
//Esse evento é disparado antes da conexão do SQLConnection
procedure TfrmPrincipal.conexaoINIBeforeConnect(Sender: TObject);
begin
try
conexaoINI.Connected := false;
conexaoINI.Params.Clear;
conexaoINI.ConnectionName:= Conn.ConnectionName;
conexaoINI.ParamsLoaded := True;
conexaoINI.DriverName := Conn.DriverName;
conexaoINI.GetDriverFunc := Conn.GetDriveFunc;
conexaoINI.LibraryName := Conn.LibraryName;
conexaoINI.VendorLib := Conn.LibraryName;
conexaoINI.Params.Add(hostname= + Conn.Hostname);
conexaoINI.Params.Add(user_name= + Conn.User);
conexaoINI.Params.Add(password= + Conn.Password);
conexaoINI.Params.Add(port= + IntToStr(Conn.Porta));
conexaoINI.Params.Add(Database= + conn.Database);
Except
on E:Exception do
ShowMessage(Erro ao acessar banco de dados!#13#10 + E.Message);
end;
end;
Nesse caso escrevi uma classe de conexão pra ler o INI mas não há necessidade disso, o conteúdo do INI postei no inicio poste, repare no nome dos atributos e compare com ini.
//Essaé função de leitura do INI
procedure TConexao.LeINI;
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create(FINI);
try
FHostname := ArqIni.ReadString (Conexao_MySQL, Hostname , );
FPorta := ArqIni.ReadInteger(Conexao_MySQL, Porta , 0 );
FDatabase := ArqIni.ReadString (Conexao_MySQL, Database , );
FPassword := ArqIni.ReadString (Conexao_MySQL, Password , );
FUser := ArqIni.ReadString (Conexao_MySQL, user_name , );
FVendorLib := ArqIni.ReadString (Conexao_MySQL, VendorLib , );
FLibraryName := ArqIni.ReadString (Conexao_MySQL, LibraryName , );
FGetDriveFunc := ArqIni.ReadString (Conexao_MySQL, GetDriveFunc , );
FDriverName := ArqIni.ReadString (Conexao_MySQL, drivername , );
FConnectionName := ArqIni.ReadString (Conexao_MySQL, ConnectionName, );
finally
ArqIni.Free;
end;
end;
//Esse evento é disparado antes da conexão do SQLConnection
procedure TfrmPrincipal.conexaoINIBeforeConnect(Sender: TObject);
begin
try
conexaoINI.Connected := false;
conexaoINI.Params.Clear;
conexaoINI.ConnectionName:= Conn.ConnectionName;
conexaoINI.ParamsLoaded := True;
conexaoINI.DriverName := Conn.DriverName;
conexaoINI.GetDriverFunc := Conn.GetDriveFunc;
conexaoINI.LibraryName := Conn.LibraryName;
conexaoINI.VendorLib := Conn.LibraryName;
conexaoINI.Params.Add(hostname= + Conn.Hostname);
conexaoINI.Params.Add(user_name= + Conn.User);
conexaoINI.Params.Add(password= + Conn.Password);
conexaoINI.Params.Add(port= + IntToStr(Conn.Porta));
conexaoINI.Params.Add(Database= + conn.Database);
Except
on E:Exception do
ShowMessage(Erro ao acessar banco de dados!#13#10 + E.Message);
end;
end;
Nesse caso escrevi uma classe de conexão pra ler o INI mas não há necessidade disso, o conteúdo do INI postei no inicio poste, repare no nome dos atributos e compare com ini.
//Essaé função de leitura do INI
procedure TConexao.LeINI;
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create(FINI);
try
FHostname := ArqIni.ReadString (Conexao_MySQL, Hostname , );
FPorta := ArqIni.ReadInteger(Conexao_MySQL, Porta , 0 );
FDatabase := ArqIni.ReadString (Conexao_MySQL, Database , );
FPassword := ArqIni.ReadString (Conexao_MySQL, Password , );
FUser := ArqIni.ReadString (Conexao_MySQL, user_name , );
FVendorLib := ArqIni.ReadString (Conexao_MySQL, VendorLib , );
FLibraryName := ArqIni.ReadString (Conexao_MySQL, LibraryName , );
FGetDriveFunc := ArqIni.ReadString (Conexao_MySQL, GetDriveFunc , );
FDriverName := ArqIni.ReadString (Conexao_MySQL, drivername , );
FConnectionName := ArqIni.ReadString (Conexao_MySQL, ConnectionName, );
finally
ArqIni.Free;
end;
end;
Boa noite, o codigo realmente é simples, mas fiquei com duvidas de como implementar ele no sistema.
Poderia ser um pouco mais claro?
Pois o delphi nao reconhece varias variaveis, eu teria que declarar todas elas?
e o meu sqlconection esta em um data module, e tem algumas propriedades que o Dm nao reconhece como o form.
Obrigado meus amigos pela força!
GOSTEI 0
Joel Rodrigues
12/02/2012
Estou fazendo um breve tutorial sobre como usar o arquivo INI para tentar te ajudar. Daqui a pouco te passo.
GOSTEI 0
Rodolfo Silva
12/02/2012
Estou fazendo um breve tutorial sobre como usar o arquivo INI para tentar te ajudar. Daqui a pouco te passo.
Bom Dia Joel,
Muito obrigado por esta ajuda!
Fico no aguardo então.
Obrigado pela Atenção.
GOSTEI 0
Joel Rodrigues
12/02/2012
Pronto, veja esse link:
http://www.joelrlneto.xpg.com.br/14022012/ArquivoINI.pdf
Não me aprofundei muito, expliquei apenas o necessário. Qualquer dúvida, fique à vontade para perguntar.
Boa sorte.
http://www.joelrlneto.xpg.com.br/14022012/ArquivoINI.pdf
Não me aprofundei muito, expliquei apenas o necessário. Qualquer dúvida, fique à vontade para perguntar.
Boa sorte.
GOSTEI 0
William
12/02/2012
Colega se mesmo assim vc não conseguir entender, instala o teenview na sua máquina hoje à noite após as 19:00 eu acesso remotamente, acredito que esteja ocorrendo errinhos bobos.
meu Skype é willfl2, pelo skype vc passa as informações necessárias.
meu Skype é willfl2, pelo skype vc passa as informações necessárias.
GOSTEI 0
Joel Rodrigues
12/02/2012
O fato de não poder colocar aspas nas postagens aqui do fórum atrapalha bastante, quem não está acostumado pensa que são variáveis, quando na verdade são strings. É necessária muita atenção.
GOSTEI 0
Rodolfo Silva
12/02/2012
Boa Tarde Amigos,
Eu li o seu tutorial, e fiz as mudanças necessarias.
Porem mesmo assim ele nao reconhece, mas tambem nao da erro algum..
Segue o Codigo do meu Data Module:
*****************************************************************************
procedure TDM.CONEXAOBeforeConnect(Sender: TObject);
var
arqINI : TINIFile;
begin
try
arqINI := TINIFile.Create(GetCurrentDir+\config.ini);
conexao.Params.Add(HostName=+arqINI.ReadString(CONFIGURACAO,HOSTNAME,));
conexao.Params.Add(User_name=+arqINI.ReadString(CONFIGURACAO,USUARIO,));
conexao.Params.Add(Password=+arqINI.ReadString(CONFIGURACAO,SENHA,));
conexao.Params.Add(Port=+arqINI.ReadString(CONFIGURACAO,PORTA,));
conexao.Params.Add(Database=+arqINI.ReadString(CONFIGURACAO,BANCO,));
except
on E : Exception do
ShowMessage(Erro ao Conectar no Banco + E.Message);
end;
end;
***********************************************************************************
E o meu arquivo Config.Ini que esta na mesma pasta que o meu executavel
**************************************************************************************
[CONFIGURACAO]
HOSTNAME=10.0.0.101
USUARIO=root
SENHA=1234
PORTA=3307
BANCO=bd_sysclin
precisa mais de algum codigo ou função alem do que esta no Before Conect?
Obrigado a Todos.
Eu li o seu tutorial, e fiz as mudanças necessarias.
Porem mesmo assim ele nao reconhece, mas tambem nao da erro algum..
Segue o Codigo do meu Data Module:
*****************************************************************************
procedure TDM.CONEXAOBeforeConnect(Sender: TObject);
var
arqINI : TINIFile;
begin
try
arqINI := TINIFile.Create(GetCurrentDir+\config.ini);
conexao.Params.Add(HostName=+arqINI.ReadString(CONFIGURACAO,HOSTNAME,));
conexao.Params.Add(User_name=+arqINI.ReadString(CONFIGURACAO,USUARIO,));
conexao.Params.Add(Password=+arqINI.ReadString(CONFIGURACAO,SENHA,));
conexao.Params.Add(Port=+arqINI.ReadString(CONFIGURACAO,PORTA,));
conexao.Params.Add(Database=+arqINI.ReadString(CONFIGURACAO,BANCO,));
except
on E : Exception do
ShowMessage(Erro ao Conectar no Banco + E.Message);
end;
end;
***********************************************************************************
E o meu arquivo Config.Ini que esta na mesma pasta que o meu executavel
**************************************************************************************
[CONFIGURACAO]
HOSTNAME=10.0.0.101
USUARIO=root
SENHA=1234
PORTA=3307
BANCO=bd_sysclin
precisa mais de algum codigo ou função alem do que esta no Before Conect?
Obrigado a Todos.
GOSTEI 0
Joel Rodrigues
12/02/2012
Qual o problema agora? Como assim não reconhece?
GOSTEI 0
Rodolfo Silva
12/02/2012
Qual o problema agora? Como assim não reconhece?
Desculpa Joel pela pertubação amigo.
Tipo este codigo que te mandei agora eu estou colocando ele no before conect do meu sql no meu data module, até aqui tudo bem, o delphi não acusou nenhum erro.
O negocio é que quando eu altero os valores no arquivo ini, ele simplesmente ignora, ele usa as configs default corretas que já estão configurados no proprio sqlconection.
é como se ele não reconhecesse o meu arquivo ini entende?
desculpa mais uma vez pela inconveniência.
Obrigado
GOSTEI 0
Joel Rodrigues
12/02/2012
Tente depurar o código para verificar se os valores estão sendo passados corretamente para a conexão.
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
GOSTEI 0
Joel Rodrigues
12/02/2012
Tente depurar o código para verificar se os valores estão sendo passados corretamente para a conexão.
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
GOSTEI 0
Rodolfo Silva
12/02/2012
Tente depurar o código para verificar se os valores estão sendo passados corretamente para a conexão.
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
Ah, antes de passar os parâmetros, tente fechar a conexão e limpar os parêmetros (conforme exemplo do colega acima).
Grande Joel, era isto mesmo que estava faltando.
Agora esta funcionando 100%.
Muito obrigado pela ajuda e pela paciência.
E obrigado ao wllfl e o Deivison pela ajuda também!
GOSTEI 0
Joel Rodrigues
12/02/2012
Que bom. Ficamos felizes em saber que seu problema foi resolvido.
Precisando, estamos aqui.
Abraço.
Precisando, estamos aqui.
Abraço.
GOSTEI 0
William
12/02/2012
Fico feliz em saber q vc resolveu, foi difícil mas montando uma vez esse conexão nunca mais vc vai ter problemas.
Até á proxima ....
Até á proxima ....
GOSTEI 0