Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2018
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: Aug 2006
Ubicación: Castellon - España
Posts: 254
Poder: 13
brakaman Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 06-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.594
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #3  
Antiguo 06-09-2018
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: Aug 2006
Ubicación: Castellon - España
Posts: 254
Poder: 13
brakaman Va por buen camino
Cita:
Empezado por brakaman Ver Mensaje
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.
Responder Con Cita
  #4  
Antiguo Hace 4 Semanas
carnace carnace is offline
Miembro
 
Registrado: Feb 2008
Ubicación: Yopal, Casanare, Colombia
Posts: 22
Poder: 0
carnace Va por buen camino
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

Última edición por carnace fecha: Hace 4 Semanas a las 08:38:04.
Responder Con Cita
  #5  
Antiguo Hace 4 Semanas
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.594
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #6  
Antiguo Hace 4 Semanas
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: Aug 2006
Ubicación: Castellon - España
Posts: 254
Poder: 13
brakaman Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo Hace 4 Semanas
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: Aug 2006
Ubicación: Castellon - España
Posts: 254
Poder: 13
brakaman Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo Hace 4 Semanas
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: Aug 2006
Ubicación: Castellon - España
Posts: 254
Poder: 13
brakaman Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como se escribe (desarrolla) un driver para DbExpress? JXJ Varios 1 09-09-2010 23:22:29
Driver PostgreSQL para dbExpress gatosoft PostgreSQL 2 09-01-2010 03:36:20
Driver dbExpress para DB2 jcporras DB2 1 02-10-2008 14:25:52
Que driver recomiendan para dbExpress con Oracle10g ? rolandoj Conexión con bases de datos 0 23-05-2008 17:58:32
free DBExpress driver raul parra Noticias 1 05-01-2004 10:00:24


La franja horaria es GMT +2. Ahora son las 04:00:04.


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