Conexao Delphi com Mysql

02/10/2017

0

Pessoal estou na parte final do meu projeto na troca de pc ao iniciar o projeto abre a tela de
login percebo que esta havendo conexao com o banco de dados porque se eu mudar algo
no banco nem inicia a tela de login. quando ponho o login e senha me retorna este erro
se alguem puder ajudar.
---------------------------
softarquivo
---------------------------
[FireDAC][Phys][MySQL] Can't connect to MySQL server on 'localhost' (10061)
---------------------------
OK

Fiz um teste tirando o codigo abaixo que do meu config funcionou normal
no outro pc mais ai funciona so local se puder me ajudar, em que estou errando no
codigo esta assim o codigo.

#CODIGO#
var server, user, senha, lib : string;
var porta : Integer;
var conf : TIniFile;
begin
//PARAMETROS DE CONEXAO
SetCurrentDir(ExtractFilePath(Application.ExeName));
conf := TIniFile.Create(GetCurrentDir + '\\\\conf.ini');
lib := GetCurrentDir + '\\\\libmysql.dll';
SERVER := conf.ReadString('BANCO','SERVER','');
USER := conf.ReadString('BANCO','USER','');
SENHA := conf.ReadString('BANCO','SENHA','');
PORTA := integer (conf.ReadString('BANCO','PORTA',''));

conecta.Connected := false;
mysql_link.VendorLib := LIB;
mysql_link.DriverID := 'MysQl';
conecta.DriverName := 'Mysql';
conecta.Params.Add('server=' +SERVER);
conecta.Params.Add('user_name=' + USER);
conecta.Params.Add('password=' + SENHA);
conecta.Params.Add('port=' +IntToStr(PORTA));

try
conecta.Connected := True;
Except


end;


end;
Anderson Saldanha

Anderson Saldanha

Responder

Post mais votado

02/10/2017

Experimente colocar assim
conf := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'conf.ini');
lib := ExtractFilePath(Application.ExeName)+ 'libmysql.dll';

Luiz Vichiatto

Luiz Vichiatto
Responder

Mais Posts

02/10/2017

Anderson Saldanha

i ae luizaummm funcionou nao de o mesmo erro estou achando que tem alguma coisa a ver com este
Integer nesta linha

#Codigo

PORTA := integer (conf.ReadString('BANCO','PORTA',''));
Responder

03/10/2017

Anderson Saldanha

i ae luizaummm funcionou nao de o mesmo erro estou achando que tem alguma coisa a ver com este
Integer nesta linha

#Codigo

PORTA := integer (conf.ReadString('BANCO','PORTA',''));
Responder

03/10/2017

Raimundo Pereira

Boa tarde.
Anderson qual a versão do seu delphi?
Está usando o firedac ou Zeos?
Responder

03/10/2017

Luiz Vichiatto

Então implemente uma exception
try
conecta.Connected := True;
Except
    on e : exception do
           MessageBox ("Erro " + e.message) //Não lembro do comando completo do messagebox
end;

i ae luizaummm funcionou nao de o mesmo erro estou achando que tem alguma coisa a ver com este
Integer nesta linha

#Codigo

PORTA := integer (conf.ReadString('BANCO','PORTA',''));
Responder

03/10/2017

Anderson Saldanha

Estou usando Delphi xe7 com firedac.
Responder

05/10/2017

Raimundo Pereira

Bom dia.
Fiz um exemplo:

  uses
  udm,
  Inifiles,

1. Vamos reorganizar seu arquivo "CONF.INI" .
    O mesmo deverá ser salvo na pasta do EXE.
   Deverá salvar libmysql.dll dentro da pasta do EXE.
    
   
Estrutura X Nomenclatura dos campos:
[CNX_MYSQL]
DATABASE=test
USERNAME=root
PASSWORD=
SERVER=localhost
PORT=3306
VENDORLIB=libmysql.dll
DRIVERID=MySQL


2. Criei uma Função: ConectBD

public
{ Public declarations }
Function   ConectBD():Boolean;
    
implementation

{$R *.dfm}


Function   TFP.ConectBD():Boolean;
Var Conf:tinifile;
var Caminho_Arquivo:STRING;
   begin
   Caminho_Arquivo:=ExtractFilePath(Application.ExeName)+'CONF.INI';
   if not FileExists (Caminho_Arquivo) then
   begin
     ShowMessage('Arquivo CONF.INI, não encontrado');
   end
   else
   Conf:=TIniFile.Create(Caminho_Arquivo);

   with dm.FDConnection1 do
   begin
   params.Database:= conf.ReadString('CNX_MYSQL','DATABASE','');
   params.UserName:= conf.ReadString('CNX_MYSQL','USERNAME','');
   params.Password:= conf.ReadString('CNX_MYSQL','PASSWORD','');
   params.DriverID:= conf.ReadString('CNX_MYSQL','DRIVERID','');

   Params.Add('Server=' +conf.ReadString('CNX_MYSQL','SERVER',''));
   Params.Add('Port=' +conf.ReadString('CNX_MYSQL','PORT',''));

   DM.FDPhysMySQLDriverLink1.VendorLib:=conf.ReadString('CNX_MYSQL','VendorLib','');
   try
   DM.FDConnection1.Connected:=TRUE;
   ShowMessage('Conexão realizada com sucesso!');
    Except
    on E : Exception do
     begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
      end;

    end;
  end;

end;


Para chamar a função:
procedure TFP.Button1Click(Sender: TObject);
begin
ConectBD;
end;


Sucesso!
Responder

05/10/2017

Anderson Saldanha

Bom dia.
Fiz um exemplo:

  uses
  udm,
  Inifiles,

1. Vamos reorganizar seu arquivo "CONF.INI" .
    O mesmo deverá ser salvo na pasta do EXE.
   Deverá salvar libmysql.dll dentro da pasta do EXE.
    
   
Estrutura X Nomenclatura dos campos:
[CNX_MYSQL]
DATABASE=test
USERNAME=root
PASSWORD=
SERVER=localhost
PORT=3306
VENDORLIB=libmysql.dll
DRIVERID=MySQL


2. Criei uma Função: ConectBD

public
{ Public declarations }
Function   ConectBD():Boolean;
    
implementation

{$R *.dfm}


Function   TFP.ConectBD():Boolean;
Var Conf:tinifile;
var Caminho_Arquivo:STRING;
   begin
   Caminho_Arquivo:=ExtractFilePath(Application.ExeName)+'CONF.INI';
   if not FileExists (Caminho_Arquivo) then
   begin
     ShowMessage('Arquivo CONF.INI, não encontrado');
   end
   else
   Conf:=TIniFile.Create(Caminho_Arquivo);

   with dm.FDConnection1 do
   begin
   params.Database:= conf.ReadString('CNX_MYSQL','DATABASE','');
   params.UserName:= conf.ReadString('CNX_MYSQL','USERNAME','');
   params.Password:= conf.ReadString('CNX_MYSQL','PASSWORD','');
   params.DriverID:= conf.ReadString('CNX_MYSQL','DRIVERID','');

   Params.Add('Server=' +conf.ReadString('CNX_MYSQL','SERVER',''));
   Params.Add('Port=' +conf.ReadString('CNX_MYSQL','PORT',''));

   DM.FDPhysMySQLDriverLink1.VendorLib:=conf.ReadString('CNX_MYSQL','VendorLib','');
   try
   DM.FDConnection1.Connected:=TRUE;
   ShowMessage('Conexão realizada com sucesso!');
    Except
    on E : Exception do
     begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
      end;

    end;
  end;

end;


Para chamar a função:
procedure TFP.Button1Click(Sender: TObject);
begin
ConectBD;
end;


Sucesso!




Nao entendi muito bem o começo de seu codigo
esta parecendo com java depois passa para o estilo
delphi
Responder

05/10/2017

Anderson Saldanha

Bom dia.
Fiz um exemplo:

  uses
  udm,
  Inifiles,

1. Vamos reorganizar seu arquivo "CONF.INI" .
    O mesmo deverá ser salvo na pasta do EXE.
   Deverá salvar libmysql.dll dentro da pasta do EXE.
    
   
Estrutura X Nomenclatura dos campos:
[CNX_MYSQL]
DATABASE=test
USERNAME=root
PASSWORD=
SERVER=localhost
PORT=3306
VENDORLIB=libmysql.dll
DRIVERID=MySQL


2. Criei uma Função: ConectBD

public
{ Public declarations }
Function   ConectBD():Boolean;
    
implementation

{$R *.dfm}


Function   TFP.ConectBD():Boolean;
Var Conf:tinifile;
var Caminho_Arquivo:STRING;
   begin
   Caminho_Arquivo:=ExtractFilePath(Application.ExeName)+''CONF.INI'';
   if not FileExists (Caminho_Arquivo) then
   begin
     ShowMessage(''Arquivo CONF.INI, não encontrado'');
   end
   else
   Conf:=TIniFile.Create(Caminho_Arquivo);

   with dm.FDConnection1 do
   begin
   params.Database:= conf.ReadString(''CNX_MYSQL'',''DATABASE'','''');
   params.UserName:= conf.ReadString(''CNX_MYSQL'',''USERNAME'','''');
   params.Password:= conf.ReadString(''CNX_MYSQL'',''PASSWORD'','''');
   params.DriverID:= conf.ReadString(''CNX_MYSQL'',''DRIVERID'','''');

   Params.Add(''Server='' +conf.ReadString(''CNX_MYSQL'',''SERVER'',''''));
   Params.Add(''Port='' +conf.ReadString(''CNX_MYSQL'',''PORT'',''''));

   DM.FDPhysMySQLDriverLink1.VendorLib:=conf.ReadString(''CNX_MYSQL'',''VendorLib'','''');
   try
   DM.FDConnection1.Connected:=TRUE;
   ShowMessage(''Conexão realizada com sucesso!'');
    Except
    on E : Exception do
     begin
       ShowMessage(''Exception class name = ''+E.ClassName);
       ShowMessage(''Exception message = ''+E.Message);
      end;

    end;
  end;

end;


Para chamar a função:
procedure TFP.Button1Click(Sender: TObject);
begin
ConectBD;
end;


Sucesso!


boiei foi mal entendi o começo
Responder

05/10/2017

Anderson Saldanha

Bom dia.
Fiz um exemplo:

  uses
  udm,
  Inifiles,

1. Vamos reorganizar seu arquivo "CONF.INI" .
    O mesmo deverá ser salvo na pasta do EXE.
   Deverá salvar libmysql.dll dentro da pasta do EXE.
    
   
Estrutura X Nomenclatura dos campos:
[CNX_MYSQL]
DATABASE=test
USERNAME=root
PASSWORD=
SERVER=localhost
PORT=3306
VENDORLIB=libmysql.dll
DRIVERID=MySQL


2. Criei uma Função: ConectBD

public
{ Public declarations }
Function   ConectBD():Boolean;
    
implementation

{$R *.dfm}


Function   TFP.ConectBD():Boolean;
Var Conf:tinifile;
var Caminho_Arquivo:STRING;
   begin
   Caminho_Arquivo:=ExtractFilePath(Application.ExeName)+'CONF.INI';
   if not FileExists (Caminho_Arquivo) then
   begin
     ShowMessage('Arquivo CONF.INI, não encontrado');
   end
   else
   Conf:=TIniFile.Create(Caminho_Arquivo);

   with dm.FDConnection1 do
   begin
   params.Database:= conf.ReadString('CNX_MYSQL','DATABASE','');
   params.UserName:= conf.ReadString('CNX_MYSQL','USERNAME','');
   params.Password:= conf.ReadString('CNX_MYSQL','PASSWORD','');
   params.DriverID:= conf.ReadString('CNX_MYSQL','DRIVERID','');

   Params.Add('Server=' +conf.ReadString('CNX_MYSQL','SERVER',''));
   Params.Add('Port=' +conf.ReadString('CNX_MYSQL','PORT',''));

   DM.FDPhysMySQLDriverLink1.VendorLib:=conf.ReadString('CNX_MYSQL','VendorLib','');
   try
   DM.FDConnection1.Connected:=TRUE;
   ShowMessage('Conexão realizada com sucesso!');
    Except
    on E : Exception do
     begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
      end;

    end;
  end;

end;


Para chamar a função:
procedure TFP.Button1Click(Sender: TObject);
begin
ConectBD;
end;


Sucesso!


Ignora as outras coisas que postei porque fiz o que voce disse meio que funcionou ele localiza o CONF.INI agora so que esta
dizendo que eu nao estou usando senha no banco de dados sendo que tem e coloquei no conf.ini

---------------------------
Debugger Exception Notification
---------------------------
Project softarquivo.exe raised exception class EMySQLNativeException with message '[FireDAC][Phys][MySQL] Access denied for user 'root'@'localhost' (using password: NO)'.
---------------------------
Break Continue Help
---------------------------
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar