Conexão e Distribuição de Aplicativos

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (0)

Neste artigo, eu comento sobre a conexão com a base de dados firebird com a plataforma RAD Studio 2010, usando os componentes da paleta dbExpress. Falo também da forma de distribuição dos aplicativos gerados a partir deste procedimento.

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.




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:




Desta forma o usuário apenas seleciona as informações de conexão e clica em OK, assim efetua a chamada da função que criará deixo do aplicativo os arquivos. Veja exemplo:

 

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!




 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?