Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Setembro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
118 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Alias e INI com Firebird em Rede
Publicado por NightOwl : Quarta, Julho 12, 2006 - 11:16 GMT-3 (7719 leituras)
Comentários 2 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador 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. Para facilitar o desenrolar deste, tomarei como base o artigo...

 publicado por diogoIPA em maio/2005, titulado "Criar arquivo de configuração para Banco de dados IB/FB".

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

Como dito anteriormente, este código foi publicado por DiogoIPA, em maio/2005, e modificado/corrigido por mim. Utilizarei os comentários no formato (*..*).

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);
  Finnaly
    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);
  Finnaly
    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:

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;

Espero ter ajudado.



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: Nando1 : Fev 07, 2007 - 02:50
(Informações sobre o membro | Enviar uma mensagem)
Só para lembrar, na procedure Ler_configuracao, as linhas "Banco.WhiteString" devem ser substituidas por "Banco.ReadString".
White é o comando para escrever
Read é para Ler.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados