Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JonatasFn

Delphi MySQL em Rede

Recommended Posts

Olha eu aqui de novo, enchendo o fórum. Desculpem se estou sendo chato, mas é q sempre programei em PHP e agora resolvi mudar e estou apanhando. Mas a dúvida é:

 

Como faço para disponibilizar a minha aplicação na rede?

por exemplo, eu crei uma aplicação no meu PC, onde está instalado o MySQL, e fiz a conexão usando o ZeosLib.

Nas propriedades da conexão, eu coloquei o HostName como Localhost.

 

Agora quero colocar esta aplicação em outra máquina da rede, mas sem ter que alterar no código, ou nesta propriedade. Tem como eu fazer isso? É com ODBC?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o certo é justamente mudar o valor do campo do hostname

 

no campo hostname você insere o IP ou o nome do host que está executando o servidor MySQL...

 

Mas então eu vou ter q complilar uma aplicação para cada máquina da rede?

 

você pode me ajudar, como faço isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não precisa recompilar toda a sua aplicação.

 

Faça assim:

Use a classe TiniFile da unit iniFiles, com ela, você pode criar arquivos ini, muito utilizados para armazenar arquivos de configuração. Procure um evento que seja executado ao inicar o programa, como onCreate de algum form e codifique para que seu sistema leia este arquivo ini e alterar o valor o valor da propriedade hostname...

 

um exemplo:

 

uses
  iniFiles;

procedure Tfrm_MainForm.FormCreate(Sender: TObject);
var
  Config: TIniFile;
begin
  Config := TIniFile.Create('./Config.ini');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','hostname','localhost');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','login','root');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','senha','');
  DataModule1.ZeosConnection.Connected := True; {Após os valores dos campos corrigidos, fazemos a conexão. Por Favor verifique o nome da propriedades do ZeosConnection}
  Config.Free;
end;

o arquivo ini pode ser desta forma:

[Servidor]
hostname=192.168.0.1
login=admin
senha=admin

O método Create da classe TIniFile recebe o caminho para o arquivo ini. O método ReadString retorna o valor para os campos do arquivo ini, o primeiro parametro é a seção, no caso servidor, o segundo parametro é o campo a buscar os valores, o terceiro é um valor padrão em caso de falha de leitura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não precisa recompilar toda a sua aplicação.

 

Faça assim:

Use a classe TiniFile da unit iniFiles, com ela, você pode criar arquivos ini, muito utilizados para armazenar arquivos de configuração. Procure um evento que seja executado ao inicar o programa, como onCreate de algum form e codifique para que seu sistema leia este arquivo ini e alterar o valor o valor da propriedade hostname...

 

um exemplo:

 

uses
  iniFiles;

procedure Tfrm_MainForm.FormCreate(Sender: TObject);
var
  Config: TIniFile;
begin
  Config := TIniFile.Create('./Config.ini');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','hostname','localhost');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','login','root');
  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','senha','');
  DataModule1.ZeosConnection.Connected := True; {Após os valores dos campos corrigidos, fazemos a conexão. Por Favor verifique o nome da propriedades do ZeosConnection}
  Config.Free;
end;

o arquivo ini pode ser desta forma:

[Servidor]
hostname=192.168.0.1
login=admin
senha=admin

O método Create da classe TIniFile recebe o caminho para o arquivo ini. O método ReadString retorna o valor para os campos do arquivo ini, o primeiro parametro é a seção, no caso servidor, o segundo parametro é o campo a buscar os valores, o terceiro é um valor padrão em caso de falha de leitura.

 

Cara fiz como você me disse, apesar de não ter compreendido muito. Mas não funcionou.

 

Olha meu código:

Config := TIniFile.Create('./Config.ini');
  DM.zconGeral.HostName := Config.ReadString('Servidor','hostname','localhost');
  DM.zconGeral.HostName := Config.ReadString('Servidor','login','root');
  DM.zconGeral.HostName := Config.ReadString('Servidor','senha','');
  DM.zconGeral.Connected := True; {Após os valores dos campos corrigidos, fazemos a conexão. Por Favor verifique o nome da propriedades do ZeosConnection}
  Config.Free;

O que eu fiz de errado? Esta instrução ReadString está lendo o que está dentro do meu arquivo .ini ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe o arquivo config.ini na mesma pasta onde está o exe do seu sistema?

 

 

Sim, criei o arquivo .ini e coloquei dentro da pasta raíz, onde está o .exe. Estou usando EasyPHP, aqui para ter o MySQL, tem algum problema tbm?

Compartilhar este post


Link para o post
Compartilhar em outros sites

de fato não. porém, eu não uso o Zeus, e não tenho acesso ao seu Source, verifique os nomes das propriedades dos componentes Zeos. Agora eu ví um detalhe também: O trecho

  DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','hostname','localhost');
   DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','login','root');
   DataModule1.ZeosLib.HostName := Config.ReadString('Servidor','senha','');

Só está alterando a propriedade HostName, ajuste para alterar o Login e a Password também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma pergunta off-topic...

 

O meu BD vai ficar em um PC que não vai rodar a aplicação.

Eu instalei o EasyPHP na máquina q roda a aplicação, e na propriedade Hostname do ZConnection eu coloquei Localhost.

Mas eu instalei na outra máquina e copiei o BD pra lá, mas se eu colocar \\Servidor na propriedade Hostname ele dá erro:

"Unknown MySQL Server host \\Servidor"

 

já coloquei sem barras, com o caminho completo, etc...

 

Como devo fazer isto? Tenho q compartilhar a pasta do MySQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa compartilhar a pasta, verifique se o usuário root (do mysql) está com permissão para acesso remoto (conecte ao banco de dados mysql - pelo easyphp mesmo - e faça um select na tabela users. o usuário root precisa estar com um símbolo de porcentagem no campo hostname. Procure no google). Esta informação de hostname deve ser a mesma que é usada pelo 'windows como nome do computador na rede', se estiver com dúvidas, use o IP do computador (prompt de comandos > ipconfig) e não use as barras. Se mesmo assim você não conseguir conectar, verifique o firewall do windows, o firewall precisa permitir conexões pela porta 3306.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa compartilhar a pasta, verifique se o usuário root (do mysql) está com permissão para acesso remoto (conecte ao banco de dados mysql - pelo easyphp mesmo - e faça um select na tabela users. o usuário root precisa estar com um símbolo de porcentagem no campo hostname. Procure no google). Esta informação de hostname deve ser a mesma que é usada pelo 'windows como nome do computador na rede', se estiver com dúvidas, use o IP do computador (prompt de comandos > ipconfig) e não use as barras. Se mesmo assim você não conseguir conectar, verifique o firewall do windows, o firewall precisa permitir conexões pela porta 3306.

 

Não dá certo ... O usuário do MySQL está assim: root@% e o firewall está desativado.

Quando eu coloco o hostname "SERVIDOR" ele não encontra nada. Já tentei com/sem barras e nada.

Preciso que esta aplicação rode na rede, pois senão não terá sentido algum.

Vcs acham melhor eu instalar o MySQL mesmo, sem usar o EasyPHP, ou dá na mesma.

Eu instalei em uma outra máquina, mas não encontrei a pasta dentro da instalação onde eu coloco o meu BD.

Vi por aí q é dentro da pasta Data, mas vasculhei tudo e não encontrei esta pasta. O que faço ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, voce precisa verificar se esta rede está funcionando direito. Use o comando ping para fazer este teste

ping <IP_DO_PC>
se o ping estiver funcionando, tente instalar apenas o MySQL mesmo e faça os testes....

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigos será que poderiam me dar uma auda???

 

estou desenvolvendo com delphi 2007, dbexpress e mysql, teria algum exemplo para conexão em rede com arquivo ini???

 

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.