Mostrando las entradas con la etiqueta Firebird. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Firebird. Mostrar todas las entradas

jueves, 26 de mayo de 2011

Preparando el entorno con Firebird

Hace unos días quise obtener lo necesario para programar hacia una base de datos Firebird y lo que me encontré fue un "masacote" de archivos debido a los links rotos del sitios, así que aquí pongo los links en orden, ojalá les sirva a ustedes también la lista para no tener que andar buscándolos en los repositorios del SourceForge:

3) archivos para la opción Embedded (opcional): acá puedes ver los archivos que se necesitan para crear un proyecto con Firebird Embebido.
4) Consola de control: Entre varias que evalué hace un tiempo, buscando que me permitieran manejar la base de datos y que fueran Open Source la que me pareció más adecuada fue Flamerobin.

Con lo anterior ya instalado tenemos el entorno listo, bueno deberías tener también instalado el VB.NET para poder programar, pero en cuanto a los componentes y librerías que hay que bajar, ya con eso estamos listos.

Para finalizar pongo un ejemplo de cómo crear la Conexión a Firebird utilizando el objeto FbConnectionStringBuilder:

 Dim Cnt As New FbConnection("")
 Dim csb As New FbConnectionStringBuilder

 csb.UserID = "SYSDBA"

 csb.Password = "masterkey"
 csb.Database = DbName
 csb.ServerType = FbServerType.Default

 Cnt.ConnectionString = csb.ToString


¡Hasta la próxima!

domingo, 9 de noviembre de 2008

Añadir Minutos a TimeStamp en Firebird

Me encontraba moviéndole un poco al Firebird y resultó que necesito añadir X cantidad de minutos a la información contenida por una columna de tipo TimeStamp. Lo lógico era utilizar la unidad 1/3600 para obtener el decimal correspondiente a los minutos (como en cualquier otro DMBS), sin embargo, los intentos fueron infructosos ya que la operación no se ejecutaba correctamente.

Casi desesperado, recordé que debía poner ".0" a los números para que los tomara como decimales y no como enteros. Al realizar lo anterior me encontré que aunque las divisiones las realizaba correctas, solo funcionaban hasta cierta cantidad de decimales. Posteriormente encontré que por lo menos para las fechas, debía escribir el número resultado de la división para encontrar el valor decimal de los minutos en lugar de realizar la división dentro de la consulta, de manera que si quiero añadir 5 minutos a la fecha actual debo utilizar un query como el que aparece a continuación y en el que podrán ver el resultado de utilizar los dos métodos:

select current_timestamp,
current_timestamp+(1.0/3600.0)*5.0 as incorrecto,
current_timestamp+(0.0006944445*5.0) as correcto
from rdb$database;



La versión de Firebird que estoy utilizando es la 2.0 y es donde el query funciona como lo indico, es decir, que falla al realizar la división. Sin embargo, leo por allí que en la versión 2.1 ya han añadido funciones para trabajar más fácilmente con las fechas así como otro montón de funciones básicas que francamente me extraña que no hubieran sido añadidas anteriormente. Algunas de ellas las comentan en el Blog de Johny Suárez.

Las versiones 2.1 de Firebird (embedded, ADO.NET y Server) las pueden encontrar en el sitio de Firebird/IbPhoenix.

Debo comentar que tras haberlas instalado, y reiniciado mi computadora =) la base de datos y el query han funcionado sin problema. Podrían probar con este

select current_timestamp,
current_timestamp+(1.0/3600.0)*5.0 as incorrecto,
current_timestamp+(0.0006944445*5.0) as correcto,
dateadd(SECOND,5,current_timestamp) as mas_correcto
from rdb$database;

Espero que este pequeño post les sirva para ahorrarse dolores de cabeza: recuerden utilizar las versiones más actuales, checar diferencias entre versiones, y si van a realizar un cambio en una base de datos en producción pues hay que tomar las precauciones de necesarias antes de realizar el cambio tales como crear una copia de respaldo de nuestros datos y configuración.