Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Driver free DBExpress para Firebird 3 (https://www.clubdelphi.com/foros/showthread.php?t=93391)

brakaman 06-09-2018 19:23:10

Driver free DBExpress para Firebird 3
 
Buenas

Que Drivers hay gratuitos para Firebird 3 en Delphi Community Tokyo. He encontrado uno.

https://sites.google.com/site/dbxfirebird/

Pero no me explica como configurar DBxdrivers.ini con los parametros correctos, solo lo explica por codigo, no me gusta tener solo esta posibilidad.

otra cosa.

En Delphi Community en Database Explorer en la parte de DBExpress , solo tengo 4 conexiones Interbase Lite, Interbase, MySQL y SQLite.
¿Como añado la conexion a Firebird?

Saludos.

Casimiro Notevi 06-09-2018 20:47:48

Esos son los mejores, y además libres y gratis.
Viene un readme.html que explica cómo configurar para firebird, es muy simple, no creo que tengas problemas.

brakaman 06-09-2018 21:50:00

Cita:

Empezado por brakaman (Mensaje 528325)
Buenas

otra cosa.

En Delphi Community en Database Explorer en la parte de DBExpress , solo tengo 4 conexiones Interbase Lite, Interbase, MySQL y SQLite.
¿Como añado la conexion a Firebird?

Saludos.

Alguien que tenga la version Profesional me puede indicar si en el Database Explorer, seccion DBExpress aparece el driver para Firebird o solo esta en la Version Enterprise en adelante.

Saludos.

carnace 17-09-2018 08:13:38

Buenas noches

A mi si me ha funcionado en Delphi 10.2 Community Edition en windows 10 de las dos formas, tanto en código como en el DataExplorer, aunque si ha sido confuso la forma de instalar el driver, sobre todo dónde colocar el archivo dbx4fb.dll.
Resumo cómo lo instalé por si le sirve a alguien:
1. Descargué la versión dbxFirebird.4.1.v56 y la descomprimí, aparecen tres carpetas: Demo, Win32 y Win64
2. En la carpeta 'C:\Program Files (x86)\Embarcadero\Studio\19.0\bin' copié el archivo dbx4fb.dll que estaba en la carpeta Win32 descomprimida (este es el que yo uso porque el Firebird que tengo instalado es el de 32 bits)
En la carpeta 'C:\Program Files (x86)\Embarcadero\Studio\19.0\bin64' se copia el archivo dbx4fb.dll que está en la carpeta Win64 (este no lo copié porque sólo uso Firebird 32 bits)
3. En la carpeta Demo hay otra carpeta llamada project.d18 y dentro ésta hay otra carpeta llamada bin. Ahí se encuentra el archivo dbxdrivers.ini, el cual contiene la información que hay que adicionarle al archivo dbxdrivers.ini que se encuentra en C:\Users\Public\Documents\Embarcadero\Studio\dbExpress\19.0. NOTA: no reemplazar el archivo, sino editar y adicionar las lineas del archivo en la sección correspondiente, es decir, no borrar la información de los drivers que ya están. También hay que cambiar la línea correspondiente en VendorLib=C:\Program Files (x86)\Firebird\Firebird_3_0\fbclient.dll
4. Una vez hecho esto ya se puede entrar al IDE y se puede ejecutar el demo de la carpeta dbxFirebird.4.1.v56\Demo\project.d18
5. El demo no va a funcionar, pero se puede modificar de la siguiente manera:
Al ejemplo le coloqué un objeto TSQLConnection y en el Data Explorer le adicioné una nueva conexión de FirebirdConnection, la cual se configura de la forma tradicional y el código lo modifiqué adicionándole otro TButton:
Código:

unit uMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SqlExpr, WideStrings, DB;

type
  TMainForm = class(TForm)
    Button1: TButton;
    SQLConnection1: TSQLConnection;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation
uses
  DBXDynalink;  { esto es por el error de Unknown driver: FirebirdConnection de acuerdo con Support de la página
                https://groups.google.com/forum/#!searchin/dbxfirebird/Unknown$20driver$3A$20FirebirdConnection%7Csort:date/dbxfirebird/dcjOBhc-0rQ/2ZjElVd4HNUJ }
{$R *.dfm}

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection; i: integer;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection'; //'FirebirdConnection';
    C.LibraryName := 'dbx4fb.dll';
    C.VendorLib := 'C:\Program Files (x86)\Firebird\Firebird_3_0\fbclient.dll';
    C.GetDriverFunc := 'getSQLDriverFIREBIRD';
  //  C.Params.Clear;
  //  C.Params.Add('User_Name=sysdba');
  //  C.Params.Add('Password=masterkey');
  //  C.Params.Add('Database=C:\BDFirebird\HVEQUIPOS3.fdb');
    for i:= 0 to C.Params.Count - 1 do
    begin
      if (Copy(C.Params[i],1,Length('VendorLib='))='VendorLib=') then
        C.Params[i]:= 'VendorLib=C:\BDfirebird\fbclient.dll'
      else if (Copy(C.Params[i],1,Length('Database='))='Database=') then
        C.Params[i]:= 'Database=C:\BDFirebird\HVEQUIPOS3.fdb'

    end;
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;

procedure TMainForm.Button2Click(Sender: TObject);
var i, Cont: integer; s: string;
begin
  SQLConnection1.Open;
  s := ''; Cont := 0;
  for i := 0 to SQLConnection1.Params.Count - 1 do
    if Copy(SQLConnection1.Params[i],1,Length('Database='))='Database=' then
      s :=  s + SQLConnection1.Params[i];
  for i:= 0 to  SQLConnection1.DataSetCount - 1 do
    Cont := Cont + 1;
  s := s + ' --- Contador datasets: ' + IntToStr(Cont);
  if SQLConnection1.Connected then
    ShowMessage('Connection is active to : ' + s);
end;

end.

https://ibb.co/knSXsK

Casimiro Notevi 17-09-2018 09:55:03

^\||/^\||/^\||/

brakaman 18-09-2018 11:58:38

Buenos dias carnace.

Muchisimas gracias....

Voy a verlo con detenimiento, desde luego su uso no es muy intuitivo, si tengo mas dudas tendre que molestarte un poco mas, ya que veo que has trabajado el asunto.

Repito gracias amigo.

brakaman 18-09-2018 13:05:48

Hola:

Este es el problema que tengo.

y en el Data Explorer le adicioné una nueva conexión de FirebirdConnection, la cual se configura de la forma tradicional y el código lo modifiqué adicionándole otro TButton:

¿Como se adiciona la nueva conexion al Data Explorer?.

El error que me da que el TSQLConnection1 DBXConnections.ini not found.

Saludos.

brakaman 18-09-2018 17:16:30

Hola ya me funciona la conexion.

Lo unico que no logro añadir el Driver al Data Explorer, espero que algun alma caritativa me lo explique.

Por lo demas me he creado un DBXConnections.ini en la carpeta :
C:\Users\Public\Documents\Embarcadero\Studio\dbExpress\19.0

con estos datos.
[Firebird]
;DelegateConnection=DBXTraceConnection
Drivername=Firebird
LibraryName=dbx4fb.dll
VendorLib=FBCLIENT.DLL
Database=C:\Program Files (x86)\Firebird\Firebird_3_0\examples\empbuild\employee.fdb
User_Name=sysdba
Password=masterkey
Role=RoleName
MaxBlobSize=-1
LocaleCode=0000
IsolationLevel=ReadCommitted
SQLDialect=3
CommitRetain=False
WaitOnLocks=True
TrimChar=False
DisplayDriverName=Firebird Server
BlobSize=-1
ErrorResourceFile=
RoleName=RoleName
ServerCharSet=
Trim Char=False
SEP=

Por supuesto no es buena idea colocar la cadena de conexion en el fichero, pero solo se trata de que funcione luego ya se configuraria por parametros.

y en el archivo dbxdrivers.ini que esta en el mismo directorio, tal y como explica el amigo carnace se configura con los parametros que indica el driver.
yo al final he añadido estos.

[Installed Drivers]
Firebird=1

[Firebird]
;DriverUnit=DBXInterBase
;DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver120.bpl
;DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=12. 0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
;MetaDataPackageLoader=TDBXInterbaseMetaDataCommandFactory,DbxInterBaseDriver120.bpl
;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxInterBaseDr iver,Version=12.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
GetDriverFunc=getSQLDriverFIREBIRD
LibraryName=dbx4fb.dll
VendorLib=FBCLIENT.DLL
BlobSize=-1
CommitRetain=False
Database=database.fdb
ErrorResourceFile=
LocaleCode=0000
Password=masterkey
RoleName=RoleName
ServerCharSet=
SQLDialect=3
IsolationLevel=ReadCommitted
User_Name=sysdba
WaitOnLocks=True
Trim Char=False
SEP=
DisplayDriverName=Firebird Server

Tambien he comprobado que el archivo dbx4fb.dll del driver se puede instalar en C:\Windows\SysWow64\ por lo menos en Windows 10, por si ha alguien no le gusta añadir ficheros
en las carpetas de la instalacion de Embarcadero Delphi, a mi
:(

Voy a seguir haciendo pruebas.

Saludos.


La franja horaria es GMT +2. Ahora son las 01:46:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi