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:
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!