Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Unhappy ¿Cómo instalo Firebird de manera muy sencilla?

Saludos a todos.

Supongamos por un momento que distribuyo una aplicación que usa Firebird. Supongamos también que no deseo complicarme mucho con el script de instalación, servicios, etc., etc. (no quiero montar un aparataje en la pc, ponerme a ver si soporta servicios o no, darle opciones extrañas a elegir al usuario del instalador, etc.), y opto por simplemente hacer que mi instalador de la aplicacion COPIE los archivos principales de Firebird en una subcarpeta dentro de la carpeta principal de mi aplicación. Supongamos que no me interesa que el servicio se inice automáticamente, que mi propia aplicación hará un shellecute de algo que inicie el servicio y al cerrar el programa lo detenga. Supongamos que quiero que funcione sin problemas en cualquier versión de Windows desde la 98' en adelante. Supongamos que el programa es monousuario; la aplicación es muy simple, sólo que quiero guardar los datos de esta manera porque los componentes de soporte .dbf que encontré no me convencieron.

Supongamos que hice eso, y traté de ejecutar el fbserver o el fbguardian y no se inició nada... ¿Cómo es que se hace? (Sin instsvc.exe, ya que es para Win con servicios, lógico).

La estructura que quiero obtener de carpetas es:

* x:\...\MiPrograma
*___ MiPrograma.exe
*___ Carpeta Datos
*_______ MiBaseDeDatos.fdb
*___ Carpeta Firebird
*_______ Carpeta Bin
*___________ ArchivosDeFireBird.xxx

Espero haber explicado bien la idea

Gracias!
Responder Con Cita
  #2  
Antiguo 12-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Nunca lo he hecho pero supongo que si descargas un .zip de FireBird con su readme te harás una buena idea de como hacerlo
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 12-03-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Supongamos que no haces las cosas como la debes hacerla si no como tu crees que debes hacerla yo no voy a suponer que tu aplicacion no va a correr yo te lo puedo asegurar.

Solo te puedo decir una cosa.
Si no te interesa lo de le servicio de firebird entonces usalo como aplicacion. Windows ya es problematico y le vas a poner firebird como aplicacion esa es tu eleccion.

Una simple pregunta que se responde con un si o un no.
¿Eres programador?
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 12-03-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola axelbb:

Cuando dices <... programa monousuario..> ¿te refieres a que el programa funciona en un solo ordenador sin estar en red?

Si es asi, puedes poner FireBird embembed.

A mi me funciona colocando dos carpetas y siete ficheros en el directorio de la aplicación.

Un saludo.
Responder Con Cita
  #5  
Antiguo 12-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Primero, lo primero:

Cita:
Empezado por rastafarey
Una simple pregunta que se responde con un si o un no.
¿Eres programador?
Respuesta: NO. Soy Contador Público Nacional, pero aficionado a Delphi, con el cual desarrollo múltiples aplicaciones sencillas y aún algunas bastante lindas que nos resuelven muchos problemas en nuestro trabajo. Programar NO ES MI OFICIO, es una herramienta, como un Excel o un Word. ¿Ok? . Algo de lo que tecleaste está de más, no me ayudó mucho. Aún corriéndolo como aplicación, no encontré manera de hacerlo funcionar del modo en que lo explico.

Volvamos al tema:

Cita:
Empezado por fidel
Cuando dices <... programa monousuario..> ¿te refieres a que el programa funciona en un solo ordenador sin estar en red?

Si es asi, puedes poner FireBird embembed.
Exacto, en este caso me sirve monousuario. Probé el embebido, sólo que me conecto con los MDO Mercury Objects, y aún renombrando fbembed.dll a fbclient.dll, no me funciona. Pero sería la mejor opción, si me podés ayudar a hacerla andar, sería óptimo . ¿Con qué componentes has usado el embebido?

Cita:
Empezado por jhonny
Nunca lo he hecho pero supongo que si descargas un .zip de FireBird con su readme te harás una buena idea de como hacerlo
Veré, quería ahorrarme esa lectura .

Gracias a todos, me gustaría poder usar el embebido.
Responder Con Cita
  #6  
Antiguo 12-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Fidel, probé recién con componentes dbExpress. Si tengo el servidor Firebird funcionando, y en VendorLib le escribo fbembed.dll, se conecta perfectamente (funciona igual que el fbclient.dll). Ahora, si detengo el servicio, ya no se conecta más, me sale el clásico mensaje:

"Unable to complete network request to host "127.0.0.1"
Failed to establish a connection
No se ha podido establecer conexión ya que el equipo de destino ha denegado activamente dicha conexión"

¿Qué estoy haciendo mal? ¿No se trabaja igual que con un superserver pero sin el server?
Responder Con Cita
  #7  
Antiguo 12-03-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Te explico un poco lo que yo hago, y a mí me funciona.

Tengo en mi ordenador FireBird 1.5 corriendo como servidor cuando compilo la aplicación.

Utilizo IBDatabase, IBTransaction, IBDataSet

Pongo en la misma carpeta:

** La aplicación:

- La aplicación (ejecutable, base de datos)

** FB embebido 1.5 :

- Carpeta intl (con un fichero dentro: fbintl.dll)

- Carpeta udf (con cuatro ficheros dentro: fbudf.dll, fbudf.sql, ib_udf.dll, ib_udf.sql)

- Ficheros aliases.conf, fbclient.dll, fbembed.dll, firebird.conf, firebird.msg, gds32.dll, ib_util.dll

fbclient.dll y gds32.dll es el mismo fichero fbembed.dll copiado y renombrado con estos dos nombres.

Con esto me anda en cualqier máquina, o en el lápiz conectado a cuaquier ordenador, incluso en CD si se pone la base de datos ReadOnly

Un saludo.
Responder Con Cita
  #8  
Antiguo 12-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Thumbs up Gracias!!

Gracias por tu colaboración, Fidel. Si a vos te funciona así, le voy a encontrar la vuelta también.

Saludos!
Responder Con Cita
  #9  
Antiguo 12-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Una pregunta mas, Supongamos que no son muchos los datos que manejas y que además no necesitas manejar muchas de las caracteristicas de una base de datos relacional ¿Porque no usas MyBase?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 13-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Question No conocía MyBase

No conozco MyBase ¿Está linda para proyectos sencillos?
Responder Con Cita
  #11  
Antiguo 13-03-2007
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Exclamation Experiencia de conexión con Firebird embebido

Ok, gracias a Fidel, que me ahorró horas (o dias) de trabajo, pude hacer funcionar sin problemas el Firebird embebido (embedded). Para terminar el tema, y si cualquier otra persona llega a necesitar utilizarlo, dejo aquí los pasos que seguí y con los cuales opero sin ningún problema esta interesante variante de Firebird. Lo hago porque hice búsquedas en los foros, y si bien se trató el tema varias veces, no conseguí implementarlo.

¿Qué es el Firebird embebido?

Firebird normalmente se instala como un servidor residente que escucha peticiones en un puerto, al cual habitualmente accedemos indicando una dirección IP del equipo en que se ha instalado. Para que esto funcione, se requiere que el servidor Firebird esté instalado en esa PC y esté iniciado, como mínimo (sin entrar en detalles como usuario y password).

Asimismo, para acceder desde el equipo en que tenemos la aplicación cliente, necesitamos las librerías cliente fbclient.dll o gds32.dll.

Firebird embebido no requiere nada de esto, siempre que se utilice de manera local exclusivamente (es decir en el mismo equipo tendremos la aplicación y los datos). Simplemente se reemplaza alguna de las librerías cliente por otra que viene en un paquete aparte (Embeded server) y se llama fbembed.dll. Claramente, sólo necesitamos nuestra aplicación, la base de datos y esta librería (más algunos otros archivitos), todo en el mismo equipo. De alguna manera, en nuestra aplicación queda embebido el servidor. Ya veremos cómo.

¿Para qué sirve?

1) Para cualquier utilidad que de seguro no requiera ser empleado en red, es decir sin acceso concurrente, ya que únicamente funciona en modo local, y además hace uso exclusivo de la base de datos, así que ni siquiera puede accederse desde otra instancia de nuestro mismo programa simultáneamente. Esta posibilidad nos ahorra hacerle instalar y configurar el servidor a nuestro
usuario. Así, se hace una alternativa excelente a usar simples ficheros .dbf para aplicaciones menores, con toda la posibilidad de extender luego ese mismo programa a mayores prestaciones con el servidor a pleno.

2) Para hacer por ejemplo un CD con gran cantidad de información, que guardamos como base de datos de Firebird y hacemos read_only, y lleva en ese CD TODO LO NECESARIO para funcionar, sin necesidad que el usuario instale Firebird. Esto es una comodidad enorme.

3) Si queremos enviar un demo de nuestro programa, se hace muy sencillo que el usuario lo instale y elimine aún con conocimientos básicos de informática, ya que hasta podría tenerlo en un pen drive.

¿Cuáles son las limitaciones?

Repetimos: Solamente uso local y exclusivo de la base de datos. Se ignora cualquier instalación que exista de Firebird, así como las entradas de registro. El root directory es el que contiene a la librería fbembed.dll. El uso exclusivo es sobre una base de datos. Si tengo dos aplicaciones en el mismo equipo accediendo a bases de datos distintas, no hay conflicto alguno.

Además, no hace caso de usuarios o claves para conectarse. Cualquier user_name o password le viene bien para conectarse a cualquier base de datos del equipo. Esto no tiene nada que ver con los privilegios otorgados en la base de datos. Es decir, me conecto como usuario "yo", pero si en la base de datos ese usuario no existe, no podrá hacer nada una vez conectado.

Desde ya que el usuario SYSDBA, con cualquier password que le pongamos, se conecta con permiso completo.

Para utilizar la base de datos en un CD, hay que crearla Read Only.

Por lo demás, no habría limitaciones, todo el sistema que antes andaba con servidor, debe operar igualmente con el embebido. Debe aceptar todo el SQL. En rigor, si esto es lo que aseguran desde IBPhoenix, no es 100% así, yo tuve que quitar de la parametrización del componente DataBase la línea:

lc_ctype=ISO8859_1

porque no era reconocida y arrojaba error. Es más, si una BD fue cread con SET NAMES o DEFAULT CHARACTER SET ISO..., seguramente no funcionará, al menos a mí me daba ese error. No sería extraño que hubiera otras limitaciones.

¿Cómo se utiliza?

Primero, conseguiremos la distribución del Firebird Embeded Server, en el mismo sitio de descargas que Firebird Superserver. Viene en un .zip. Lo descomprimimos.

Segundo, se arma una estructura de carpetas como sigue:

Mínimamente:

Carpeta principal=> x:\...\MiPrograma

Dentro de ésta ponemos los siguientes archivos:
.\MiEjecutable.exe y los demás que tenga con él
.\MiBaseDeDatos.fdb (puede ir en otra carpeta siempre que esté en el mismo equipo)
.\firebird.msg
.\fbclient.dll ó gds32.dll (fbembed.dll renombrada a una de éstas)
.\icudt30.dll (Estas tres últimas, se incorporan en caso que usemos Firebird 2
.\icuin30.dll No están en las 1.5.x.)
.\icuuc30.dll


NOTA: Cualquiera(fbclient o gds32) sirve, porque en realidad es la famosa "fbembed.dll" QUE HA SIDO RENOMBRADA a uno de esos nombres, dependiendo de la librería de acceso que hayamos elegido en el componente de conexión:

* Para InterBase Data Access Components: Renombrar a gds32.dll
* Para MDO Mercury Objects: Podemos elegir en la propiedad ClientLib cuál usar, y según ésta es el nombre que le daremos.
* Para dbExpress: En propiedad VendorLib pondremos cualquiera de las dos, y el mismo nombre le daremos a la fbembed.dll. También funciona si no la renombramos, pero en VendorLib ponemos fbembed.dll.

Si nuestro sistema usa UDF's, o decidimos cambiar alguna configuración por defecto de Firebird, agregamos:

.\firebird.conf
.\ib_util.dll
.\intl\fbintl.dll
.\udf\fbudf.dll


Ver el Readme_embedded.txt que viene dentro del .zip para más detalles y variantes, como instalar el embebido en otra carpeta del equipo.

Bien, aquí se me presentaron algunos problemas:
Al tener instalado un servidor Firebird en mi PC de desarrollo, los componentes insistían en encontrar algún otro fbclient.dll en alguna otra parte de la PC, sin llevarme el más mínimo apunte a que en el directorio de la aplicación tenía mi bembed.dll "disfrazado" de fbclient.dll.

Si el servidor estaba operativo, todo funcionaba bien, pero en cuanto detenía el servicio para probar el embebido, daba errores. La única forma que encontré fue hacer una búsqueda en toda la PC y eliminé todo rastro de fbclient.dll y gds32.dll que hubiera. Solamente dejé las de la carpeta bin de firebird, pero renombradas a "_fbclient.dll" y "_gds32.dll" para usarlas cuando me hicieran falta. Aún no sé por qué, pero de esta manera sí comenzó a utilizar el sistema embebido.

Si alguien tiene el mismo problema, pruebe a hacer esto.

Otra cosa muy importante, es que no utilizamos cadenas de conexión al estilo:

192.165.0.212:C:\MiSistema\Database\MiBD.fdb
ó
127.0.0.1:C:\MiSistema\Database\MiBD.fdb

Cuando usamos embebido, solamente pondremos esto:

C:\MiSistema\Database\MiBD.fdb

¡¡Prestar atención a ese punto!!

Aclaremos que si le ponemos una IP, y el servidor en esa IP existe y está funcionando, se comporta como la fbclient.dll original, accediendo a la base de datos indicada en la cadena de conexión.

En resumen, los pasos son:

1) Descargar el paquete del embebido y armar la estructura de carpetas que necesitamos.
2) Detener el servicio Firebird, si es que está instalado y operando.
3) Quitar todas las fbclient.dll que haya en el sistema.
4) Cambiar la cadena de conexión de nuestra aplicación al modo local, sin la IP previa (C:\MiSistema\Database\MiBD.fdb)
5) Poner en la carpeta de la aplicación la "fbembed.dll" pero renombrada a fbclient.dll, por ejemplo.
6) Activar la conexión. Si se hizo todo como está indicado, debería funcionar!!

Cualquier comentario que corrija o complete este post será bien recibido para completar el tema y que quede disponible para futuras consultas.

Última edición por axelbb fecha: 13-03-2007 a las 22:56:34. Razón: Falta incorporar informacion
Responder Con Cita
  #12  
Antiguo 13-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Muy interesante, gracias axelbb
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
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 instalo odbc en linux como root o usuario! Arturo MySQL 0 22-06-2006 19:44:27
como instalo el BDE administrator? maruenda Varios 1 22-11-2004 22:38:22
como instalo un componente con su DCU? fjolivares Varios 1 01-10-2004 20:28:39
Como lo instalo? Caljim Conexión con bases de datos 2 06-08-2004 10:33:00
Como instalo el BDE ramiretor Conexión con bases de datos 4 28-03-2004 23:49:49


La franja horaria es GMT +2. Ahora son las 19:03:41.


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
Copyright 1996-2007 Club Delphi