Olá pessoal, estou começando a cuidar do meu blog...rsrs vamos ver se agora vai.
Bom esses dias passeando pela net encontrei esta artigo, achei interessante, ai resolvi postar aqui para voces, espero que gostem:
Neste artigo mostrarei uma variação de como configurar o acesso ao banco de dados Firebird, usando aliases no lado do servidor e arquivos INI no lado do cliente.
Primeiro vamos definir algumas coisas:
Como funciona o FB em relação aos banco de dados e sua localização?
O Firebird é um banco open-source derivado do fork do código do Interbase 6.0 em 2000. E como tal, mantém muitos comportamentos. Entre eles, permitir que o banco seja identificado por seu caminho na máquina servidora.
Devido a esta característica, algumas pessoas imaginam (infelizmente) que os arquivos do banco de dados precisam ser compartilhados, e desandam a colocar os mesmo em pastas ou drives mapeados de rede.
Esse procedimento, além de desnecessário e de comprometer a segurança do servidor, expõe o arquivo do banco de dados a um risco de corrupção praticamente irrecuperável, mesmo usando o utilitário GFIX. Resumindo:
Não coloque o banco de dados em um drive de rede mapeado ou diretório compartilhado! Ele deve estar sem acesso direto pelas outras máquinas da rede!!!
Aliases do lado do servidor
Na versão 1.5 foi implementado um mecanismo de aliasing no lado do servidor, pedido feito há muito tempo pela comunidade.
Fazer um alias no servidor é algo bastante simples, aliás, necessita-se do pesadíssimo editor de texto chamado Bloco de notas para abrir com o arquivo aliases.conf, que se encontra no diretório de instalação do FB, e acrescentar uma linha do tipo:
banco=C:\dados\banco.fdb
Para usar o alias, ao especificar a string de conexão do banco, deve-se seguir a seguinte sintaxe:
nome_do_servidor:banco
Usando arquivos INI para os parâmetros da conexão
Primeiro passo, criar uma procedure para Gravar as configurações no ini:
//Url: caminho do banco
//Usr: nome de usuário
//Pws: senha
procedure Gravar_Configuracao(Url , Usr, pws : String);var Banco : TIniFile;
begin
try
SetCurrentDir(ExtractFilePath(Application.ExeName));
Banco := TIniFile.create(GetCurrentDir + '\database.ini');
(* onde "c:\database.ini" e o caminho eu por padrão deixo somente
database.ini sem o "c:\" assim será salvo em c:\windows\
Eu alterei o exemplo para que o INI seja sempre gravado no
diretório onde se encontra o executável do programa *)
Banco.WriteString('DATABASE','CAMINHO',URL);
Banco.WriteString('DATABASE','USUARIO',USR);
Banco.WriteString('DATABASE','USUARIO',PWS);
finally
Banco.Free;
end;
end;
Segundo passo, criar um procedimento para Ler do ini as configurações gravadas:
//url : caminho do banco / USR : nome de usuário / PWS : senha
(* O código original não poderia funcionar pois é necessário
que esses parâmetros sejam passados por referência em vez
de por valor como no código original*)
procedure Ler_Configuracao(var Url: String; var Usr: String; var pws: String);
begin
try
Banco := TIniFile.create(GetCurrentDir+'\database.ini');
URL := Banco.WriteString('DATABASE','CAMINHO',URL);
USR := Banco.WriteString('DATABASE','USUARIO',USR);
PWS := Banco.WriteString('DATABASE','USUARIO',PWS);
finally
Banco.Free;
end;
end;
Terceiro passo, carregar as informações do ini para o componente de conexão. Neste exemplo, faço essa operação no evento onCreate do form:begin
try
Banco := TIniFile.create(GetCurrentDir+'\database.ini');
URL := Banco.WriteString('DATABASE','CAMINHO',URL);
USR := Banco.WriteString('DATABASE','USUARIO',USR);
PWS := Banco.WriteString('DATABASE','USUARIO',PWS);
finally
Banco.Free;
end;
end;
procedure form1.create(Sender : TObject);
var url,usr,pwd : String
begin
SetCurrentDir(ExtractFilePath(Application.ExeName));
IbDatabase.Close;
Ler_configuracao(Url,Usr,Pwd);
IbdataBase.params.add('user_name='+USR);
Ibdatabase.params.add('password ='+PWD);
ibdatabase.DatabaseName := Url;
IbDatabase.Open;
end;
var url,usr,pwd : String
begin
SetCurrentDir(ExtractFilePath(Application.ExeName));
IbDatabase.Close;
Ler_configuracao(Url,Usr,Pwd);
IbdataBase.params.add('user_name='+USR);
Ibdatabase.params.add('password ='+PWD);
ibdatabase.DatabaseName := Url;
IbDatabase.Open;
end;
Bom pessoal é isso, espero ter ajudado.
Até a próxima.
0 comentários:
Postar um comentário