Neste artigo venho comentar sobre a criação de aplicativos usando o RAD Studio 2010 com banco de dados firebird 2.1. Como todos sabem o Delphi 2010 já possui nativo, os drivers de conexão

com o banco de dados firebird. O que foi muito bom, pois até a versão 2009, tínhamos que ficar encontrado drivers que melhor se adequava.

Vamos usar para efetuar a conexão com o banco de dados, os componentes da paleta dbExpress. Sendo assim, vamos primeiramente, verificar se o arquivo de configuração dbxdrivers.ini já está habilitado para conexão com o firebird. Para isso abra o arquivo normalmente localizado na pasta C:\Users\Public\Documents\RAD Studio\dbExpress\7.0. Na sessão [Installed Drivers], verifique se a chave Firebird esta igual a “1”, que indica estar habilitado a configuração, caso contrário, mude a informação da chave para “1” e salve o arquivo.

  • Com o delphi devidamente aberto, adicione a um datamodulo o componente SQLConnection.
  • Na propriedade ConnectionName, selecione a opção FBConection.
  • Agora abra o Editor de valores da propriedade Params, e informe o path do arquivo de banco de dados na chave Database e seqüência clique em ok.
  • Na propriedade LoginPrompt, selecione false para evitar que seja solicitado dados da conexão toda vez que a mesma for ativada.
  • Altere a propriedade Conected para true, Caso os passos anteriores tenham sidos efetuados corretamente, a conexão estará estabelecida.
Delphi está aberto

Para realizar a distribuição do aplicativo, você deverá enviar junto com o executável, uma cópia da DLL dbxfb.dll e dos arquivos dbxconnections.ini e dbxdrivers.ini, que é onde estará armazenado os dados para conexão, e adicionar os códigos abaixo no evento OnCreate do datamodulo.


            try

            ConexaoDBX.Connected := false;
        
            ConexaoDBX.Params.Clear;
        
            ConexaoDBX.LoadParamsFromIniFile(ExtractFilePath(Application.ExeName)+'dbxconnections.ini');
        
            ConexaoDBX.Connected := true;
        
            //
        
            ConexaoDados := ConexaoDBX;
        
         except
        
            MessageDlg('Erro ao conectar banco de dados. Verifique!!!', mtWarning, [mbOK], 0);
        
            Application.CreateForm(TFrmConfigConexao,FrmConfigConexao);
        
            try
        
              FrmConfigConexao.showmodal;
        
            finally
        
              FrmConfigConexao.Destroy;
        
              MessageDlg('O aplicativo será encerrado. Execute-o novamente!!!', mtWarning, [mbOK], 0);
        
              Application.Terminate;
        
            end;
        
          end;
        

Observe ainda, que no código acima efetuo a chamada de outro formulário, FrmConfigConexao, que é onde eu crio estes arquivos em tempo de execução em caso de erro na conexão. Veja figura abaixo:

Formulári FrmConfigConexao

            function TFrmConfigConexao.GravaDbxConectionsINI: Boolean;

            var sNomeArq1, sNomeArq2 : string;
            
                  sConfig1,sConfig2 : TIniFile;
            
            begin
            
              sNomeArq1 := ExtractFilePath(Application.ExeName)+'dbxconnections.ini';
            
              sNomeArq2 := ExtractFilePath(Application.ExeName)+'dbxdrivers.ini';
            
              // dbxconection.ini
            
              sConfig1 := TIniFile.Create(sNomeArq1);
            
              sConfig1.WriteString('FBConnection',';DelegateConnection','DBXTraceConnection');
            
              sConfig1.WriteString('FBConnection','DriverName',CdsConfigDRIVER.AsString);
            
              sConfig1.WriteInteger('FBConnection','BlobSize',1);
            
              sConfig1.WriteString('FBConnection','CommitRetain','False');
            
              sConfig1.WriteString('FBConnection','Database',CdsConfigPATHBANCO.AsString);
            
              sConfig1.WriteString('FBConnection','ErrorResourceFile','');
            
              sConfig1.WriteInteger('FBConnection','LocaleCode',0000);
            
              sConfig1.WriteString('FBConnection','Password',CdsConfigSENHAUSU.AsString);
            
              sConfig1.WriteString('FBConnection','RoleName','RoleName');
            
              sConfig1.WriteString('FBConnection','ServerCharSet','');
            
              sConfig1.WriteInteger('FBConnection','SQLDialect',3);
            
              sConfig1.WriteString('FBConnection','Interbase TransIsolation','ReadCommited');
            
              sConfig1.WriteString('FBConnection','User_Name',CdsConfigNOMEUSU.AsString);
            
              sConfig1.WriteString('FBConnection','WaitOnLocks','True');
            
              sConfig1.WriteString('FBConnection','IsolationLevel','ReadCommitted');
            
              sConfig1.WriteString('FBConnection','Trim Char','False');
            
              sConfig1.Free;
            
             
            
              // drivers.ini
            
              sConfig2 := TIniFile.Create(sNomeArq2);
            
              sConfig2.WriteString('Firebird','DriverUnit','DBXFirebird');
            
              sConfig2.WriteString('Firebird','DriverPackageLoader',
            
                                                'TDBXDynalinkDriverLoader,DbxCommonDriver140.bpl');
            
              sConfig2.WriteString('Firebird','DriverAssemblyLoader',
            
                                                'Borland.Data.TDBXDynalinkDriverLoader,
            
                                                Borland.Data.DbxCommonDriver,
            
                                                Version=14.0.0.0,
            
                                                Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
            
              sConfig2.WriteString('Firebird','MetaDataPackageLoader',
                                                'TDBXFirebirdMetaDataCommandFactory,DbxFirebirdDriver140.bpl');
              sConfig2.WriteString('Firebird','MetaDataAssemblyLoader',
            
                                                'Borland.Data.TDBXFirebirdMetaDataCommandFactory,
            
                                                Borland.Data.DbxFirebirdDriver,
            
                                                Version=14.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
            
              sConfig2.WriteString('Firebird','GetDriverFunc','getSQLDriverINTERBASE');
            
              sConfig2.WriteString('Firebird','LibraryName','dbxfb.dll');
            
              sConfig2.WriteString('Firebird','VendorLib','fbclient.DLL');
            
              sConfig2.WriteInteger('Firebird','BlobSize',-1);
            
              sConfig2.WriteString('Firebird','CommitRetain','False');
            
              sConfig2.WriteString('Firebird','Database',CdsConfigPATHBANCO.AsString);
            
              sConfig2.WriteString('Firebird','ErrorResourceFile','');
            
              sConfig2.WriteString('Firebird','LocaleCode','0000');
            
              sConfig2.WriteString('Firebird','Password',CdsConfigSENHAUSU.AsString);
            
              sConfig2.WriteString('Firebird','RoleName','RoleName');
            
              sConfig2.WriteString('Firebird','ServerCharSet','');
            
              sConfig2.WriteInteger('Firebird','SQLDialect',3);
            
              sConfig2.WriteString('Firebird','IsolationLevel','ReadCommitted');
            
              sConfig2.WriteString('Firebird','User_Name',CdsConfigNOMEUSU.AsString);
            
              sConfig2.WriteString('Firebird','WaitOnLocks','True');
            
              sConfig2.WriteString('Firebird','Trim Char','False');
            
              sConfig2.Free;
            
             
            
            end;
        

Há programadores que preferem apenas armazenar o path do arquivo em arquivo de configuração e em tempo de execução passar os parâmetros, mas acredito que desta forma facilita a manutenção de acesso a base de dados.

Espero que tenham gostado!