Aplicaciones portables con Visual FoxPro y Firebird

17 comentarios

Firebird tiene una característica buenísima que otros SGBDR no poseen: te permite crear aplicaciones portables.

¿Qué es una aplicación portable?

Una aplicación que no necesita ser instalada. Todo lo que se requiere para ejecutarla es hacer click sobre el archivo .EXE correspondiente y listo, ya está.

¿Cómo se crea una aplicación portable?

Para crear una aplicación portable con Visual FoxPro y Firebird necesitarás:

    • Que Visual FoxPro sea portable
    • Que Firebird sea portable

¿Cómo se crea una aplicación de Visual FoxPro portable?

Copiando en la misma carpeta donde se encuentra tu archivo .EXE los archivos .DLL que corresponden a tu versión del Visual FoxPro. Para el caso de Visual FoxPro 9 esos archivos son:

    • MSVCR71.DLL
    • VFP9R.DLL
    • VFP9RENU.DLL
    • VFP9RESN.DLL
    • VFP9T.DLL

¿Cómo se crea una aplicación Firebird portable?

Copiando en la misma carpeta donde se encuentra tu archivo .EXE los archivos:

    • fbclient.dll
    • ib_util.dll
    • icudt30.dll
    • icuin30.dll
    • icuuc30.dll
    • odbcfb.dll
    • odbcfb.lib
    • odbcfb.pdb

Creando una carpeta llamada INTL y copiando en ella los archivos:

    • fbintl.conf
    • fbintl.dll

Creando una carpeta llamada UDF y copiando en ella los archivos:

    • fbudf.dll
    • fbudf.sql
    • fbudf.txt

¿Por qué se deben crear las carpetas INTL y UDF?

Los archivos que se encuentran en la carpeta INTL (internacional) te permiten que en la Base de Datos puedas tener vocales acentuadas, letras eñe y otros caracteres especiales.

Los archivos que se encuentran en la carpeta UDF (funciones del usuario) te permiten que tu Base de Datos pueda utilizar funciones externas. Si no usas funciones externas esta carpeta no será necesaria.

¿Qué más se debe hacer para que el Firebird sea portable?

Debes registrar, usando el programa REGSVR32.EXE (que es parte del Windows y por lo tanto siempre está disponible), el archivo:

    •  odbcfb.dll

Esa registración puedes hacerla manualmente o automáticamente.

¿Dónde se puede encontrar una aplicación portable desarrollada con Visual FoxPro 9 y Firebird?

Para mostrarte el concepto, hice un pequeño programa de demostración que puedes descargar desde:

http://www.mediafire.com/download.php?e818d5dktqqtqfh

El cual entre otras cosas, también se encarga de registrar automáticamente al archivo odbcfb.dll

¿Y si tengo alguna duda sobre cómo crear una aplicación portable o sobre algún otro tema de Firebird?

Puedes dejarme un comentario en este mismo blog y te responderé lo más pronto posible.

¿Por qué en Windows XP funciona perfectamente pero tengo problemas con Windows 7?

Porque Windows 7 ha mejorado el aspecto de la seguridad y no te permite que instales drivers automáticamente. Pero puedes instalar un driver si le dices que quieres ejecutar al programa como administrador. Para ello, coloca el cursor sobre el nombre del programa .EXE y luego presiona el botón derecho del mouse (ratón) para ver un menú contextual similar al que se muestra en la siguiente imagen:

EMBEDDED1

(si haces clic en la imagen la verás más grande)

¿Qué más necesito hacer para poder ejecutar este programa portable?

Nada más.

En el archivo SQL_EMBEDDED.ZIP encontrarás todo lo que necesitas para que tu aplicación hecha con Visual FoxPro y Firebird sea totalmente portable. Inclusive una Base de Datos llamada DEMO.FDB y el código fuente del programa SQL_EMBEDDED.EXE, que se encuentra en el archivo MAIN.PRG

Alias, archivos y rutas

6 comentarios

Normalmente cuando te conectas a una Base de Datos utilizas un “string de conexión”, el cual consiste de:

  • el nombre de la computadora que actúa como Servidor
  • dos puntos
  • la ruta a la Base de Datos

Ejemplo:

localhost:MiBaseDatos

Esto funciona bien, pero hay varias razones por las cuales es preferible que uses un alias, o sea un nombre alternativo y generalmente mucho más corto:

  1. No hay limitaciones sintácticas para el nombre del alias
  2. Un alias evita que escribas mal un string de conexión largo o complicado
  3. Si no usas alias y la ruta a la Base de Datos tiene espacios, deberás usar apóstrofos para rodearla
  4. El alias oculta la localización física de la Base de Datos, eso significa que nadie puede saber donde está localizada
  5. El alias te permite mover la Base de Datos a otra localización. Y como tu string de conexión no cambiará, entonces nada debes cambiar en tus programas de aplicación

Especificando un alias

En la carpeta donde instalaste el Firebird, por ejemplo en C:\Archivos de Programa\Firebird\Firebird_2_5\ encontrarás un archivo cuyo nombre es ALIASES.CONF

Debes editar ese archivo escribiendo el nombre del alias, el signo de igualdad, y la ruta física y el nombre de la Base de Datos. Ejemplos:

COLEGIO = D:\SISTEMAS\ARCHIVOS\COLEGIO.FDB

CONTA = E:\BASESDATOS\CONTA.FDB

MI BD = F:\BASES\DATABASE1.FDB

SUELDOS = localhost/3051:F:\DATABASES\ERP.FDB

Fíjate que en el último ejemplo se especificó también el puerto, en este caso el 3051. Esto debes hacer cuando el puerto no es el 3050, ya que el 3050 es el que usará el Firebird si ningún otro es especificado

Y en el ejemplo anterior hay un espacio entre las palabras MI y BD. Pero si tu alias tiene espacios no debes olvidarte de rodear con apóstrofos al nombre de tu alias en el string de conexión

Strings de conexión usando alias

CONNECT COLEGIO USER SYSDBA PASSWORD masterkey;

CONNECT ‘MI BD’ USER SYSDBA PASSWORD masterkey;

CONNECT SUELDOS USER SYSDBA PASSWORD masterkey;

Evitando conflictos con la extensión .GDB

InterBase, del cual se deriva Firebird, usaba la extensión .GDB y todo iba bien hasta que a la gente de Microsoft se les ocurrió usar también esa extensión en el Windows, provocando un conflicto con las bases de datos cuya extensión es .GDB

Desde el Windows XP la extensión .GDB es usada en el sistema de restauración del Windows. El problema es que cuando abres un archivo con la extensión .GDB en una computadora con Windows XP y con sus parámetros originales de configuración el Sistema Operativo hará una copia de ese archivo antes de permitirte la conexión. Inclusive grandes bases de datos serán copiadas si hay suficiente espacio libre. Lastimosamente no hay documentación de Microsoft que explique por qué incluye a los archivos con extensión .GDB

Si necesitas conectarte a una Base de Datos que tiene extensión .GDB una solución sencilla es crearle un alias con otra extensión, por ejemplo con la extensión .FDB como puedes ver en el siguiente ejemplo:

 E:\BASESDATOS\CONTA.GDB =  E:\BASESDATOS\CONTA.FDB

Fíjate que lo único que se cambió fue la extensión, se reemplazó .GDB por .FDB

Aumentando la seguridad

En el archivo FIREBIRD.CONF hay una entrada llamada DatabaseAccess, la cual puede tener 3 valores:

  • Full, significa que las bases de datos pueden encontrarse en cualquier disco duro y en cualquier carpeta del Servidor
  • Restrict, significa que las bases de datos pueden encontrarse solamente en las carpetas especificadas a su continuación
  • None, significa que solamente se puede conectar a los alias especificados en el archivo ALIASES.CONF

Se recomienda usar siempre None porque eso aumenta muchísimo la seguridad.

Sin embargo, si usas None hay un punto muy importante que debes recordar:

  • No podrás crear bases de datos en esa computadora

La razón es que no puedes especificar un alias cuando creas una Base de Datos, especificas el alias para conectarte a la Base de Datos pero no para crearla. Por lo tanto, es una muy buena medida de seguridad en el Servidor de producción, al que se conectan los usuarios, pero no deberías elegir la opción None en la computadora que usas para desarrollar tus aplicaciones o no podrás crear nuevas bases de datos allí.

NOTA: Si haces un cambio en el archivo FIREBIRD.CONF deberás detener y reiniciar el Servidor del Firebird para que dicho cambio tenga efecto.

Para detener al Servidor del Firebird: Inicio | Panel de Control | Firebird Server Manager | Stop

Para reiniciar al Servidor del Firebird: Inicio | Panel de Control | Firebird Server Manager | Start

Artículos relacionados

https://firebird21.wordpress.com/2013/04/25/restringiendo-el-acceso-a-las-bases-de-datos/

https://firebird21.wordpress.com/2013/04/25/aumentando-la-seguridad-con-aliases-conf/