Bases de datos en Xojo, todo lo que necesitas

Bases de datos en Xojo, todo lo que necesitas
Sin comentarios Facebook Twitter Flipboard E-mail

Actualmente son escasas, por no decir nulas, las aplicaciones que no utilizan o acceden a una base de datos para la persistencia de la información y su posterior recuperación y tratamiento. Y este es, precisamente, uno de los motivos en los que Xojo (y las aplicaciones desarrolladas con este entorno) pueden sacar pecho y pasearse con la cabeza bien alta.

Te preguntarás por qué, pues porque tal y como descargas el IDE encontrarás en su carpeta de plug-ins (librerías dinámicas, a fin de cuentas) cuatro archivos muy especiales; son los que proporcionan acceso nativo a los principales motores de bases de datos utilizados en la actualidad: MySQL Community Edition, Microsofft SQL Server, Oracle 8i (y posteriores) y PostgreSQL.

Sobre estos, Xojo soporta de forma interna (sin necesidad de cargar una librería adicional) SQLite y además también podrás acceder a cualquier otra base de datos, incluyendo en el grupo a Microsoft Access, cualquier otra que proporcione conectividad a través de ODBC. En este caso, sin embargo, ya sabes que la configuración corre por tu cuenta y que muy probablemente debas de instalar en tu equipo una serie de controladores adicionales que realicen las funciones de interfaz entre la base de datos y Xojo.

xojo

Sin embargo, si bien a la hora de utilizar Xojo de forma gratuita no tendrás problema para trabajar con cualquiera de estos motor de bases de datos, para el despliegue de tus aplicaciones has de tener en cuenta que se precisa comprar la licencia Xojo Database Access en el caso de que tus necesidades en el acceso a bases de datos vaya más allá de SQLite (soporta la versión 3.7.17). (Por otra parte, la licencia Xojo Pro ya integra dicha capacidad de serie, además de otras muchas.

Otros desarrolladores también ofrecen sus librerías para trabajar con bases de datos, e incluso sus propias soluciones de bases de datos. Tales son el caso de la excelente Valentina, FrontBase (en este caso no es multiplataforma, solo para OS X) o la también multiplataforma CubeSQL de SQLabs. Sobre las anteriores también conviene tener muy en cuenta el componente comercial MBS Xojo SQL Plugin, donde se facilita soporte para DB2, Sybase, Informix, Interbase y la edición Enterprise de MySQL, al tiempo que se añaden características adicionales en el soporte de bases de datos Oracle, y Microsoft SQL Server sobre el proporcionado por Xojo.

Sin embargo, el soporte de bases de datos no relacionales aun es un tanto incipiente y, así, la capacidad de trabajar con MongoDB se realiza mediante una solución por el momento algo tierna (aunque funcional); si bien se trata de una solución abierta y desarrollada por la comunidad de usuarios, de modo que tiene visos de convertirse en una opción sólida y completa para cualquier desarrollo, con el aliciente adicional de que se trata de una solución que está creada al 100% en Xojo, lo que significa más facilidades durante la depuración.

¡Recuerda, Xojo es un IDE… también para BBDD!

Sobre lo anterior, Xojo también proporciona otras ventajas. La primera de ellas es que ¡incluye su propio editor de bases de datos! (para la clase SQLiteDatabase). Ciertamente, dicho editor no incluye el mismo nivel de herramientas que podríamos encontrar en soluciones más completas como puedan ser las proporcionadas por Navicat en cualquiera de sus ediciones (mi solución favorita, por cierto), pero cumple perfectamente su función y evita la necesidad de tener que instalar software adicional, además de que también tendrás integradas las bases de datos creadas para un proyecto concreto en el propio IDE.

Y si el proyecto con el que estemos trabajando requiere de una conexión a una base de datos MySQL, PostgreSQL, MS SQL Server, Oracle u ODBC, entonces también podremos hacerlo desde el propio editor, ya sea para un acceso local sobre el equipo, sobre la red local o bien de forma remota (siempre y cuando la configuración del servidor o hosting remoto así lo permita, algo no siempre recomendable por cuestiones de seguridad).

¿Qué ventaja aporta este tipo de conexión preestablecida en vez de realizarla por completo desde código? Básicamente rapidez y más flexibilidad. Es realmente cómodo.

xojo editor bbdd

Volviendo al editor de bases de datos, las opciones incluidas nos permiten crear tantas tablas como precisemos con sus correspondientes columnas, en cuyo caso también es posible indicar no solo el tipo de columna (tipo de dato) sino también si se trata de una columna con contenido no nulo (obligatorio), si se trata de una clave primaria y si ha de incluirse en un índice, además de establecer su longitud y el valor a aplicar por omisión en caso de que así lo deseemos.

Personalmente, creo que es una lástima que el editor de bases de datos sólo se limite a la definición del esquema y que no permita alimentarla con datos, para lo cual precisaremos crear un proyecto Xojo adicional (paradójico) o bien utilizar una herramienta externa.

En muchos casos también puede llevar a la confusión que la base de datos creada mediante el editor aparezca en el navegador de proyectos pero no quede muy claro si el IDE se encarga de incluirla en el "paquete" a la hora de desplegar la solución o bien qué hemos de hacer. De hecho, muchas de las preguntas que me hacen nuevos usuarios de Xojo es precisamente sobre esto mismo.

Lo cierto es que el archivo de base de datos SQLite estará en la ruta que hayamos indicado durante el primer paso presentado por el Editor de Bases de Datos —algo que por lo visto, solemos olvidar—, y será nuestra responsabilidad incluirla en el bundle de la aplicación (caso de OS X) o carpeta de despliegue/instalador (Windows y Linux) para que todo funcione correctamente. Afortunadamente, esto es algo que resulta muy sencillo de automatizar gracias a la característica de los "pasos de Compilación". Se trata de una capacidad que funciona desde el propio IDE y que nos permite copiar archivos, o ejecutar scripts como parte del proceso de pre o post-compilación del proyecto.

Lo mejor de todo es que en cualquier momento puedes crear una subclase a partir de cualquiera de los motores de bases de datos soportadas, lo que significa la capacidad de añadir métodos, métodos compartidos (métodos de clase), propiedades, etc. A efectos prácticos significa añadir una capa de abstracción adicional que permite trabajar con las bases de datos con un código más limpio, rápido de mantener, modular y que requerirá de mínimos cambios en el caso de que en el futuro decidamos sustituir un tipo de base de datos por otra.

Más seguridad

Por otra parte, también destaca el método Prepare de la clase Database y que supone el punto de partida para preparar PreparedStatements. Se trata de una característica dirigida a optimizar los accesos a la base de datos mientras que, por otra, también supone una protección adicional frente a los ataques de inyección SQL en las apps web.

Front-ends, coser y cantar

Otra capacidad que hace de Xojo una opción especialmente atractiva para muchos usuarios es que resulta tremendamente rápido crear interfaces, clientes o aplicaciones que trabajen con los registros de cualquiera de las bases de datos soportadas, todo ello gracias al control de UI DataControl.

xojo datacontrol

Sólo hay que añadir dicho control sobre una ventana de proyecto, desplegar el panel del Inspector e indicar sus propiedades: base de datos que se va a utilizar, nombre de la tabla (aparecerán todas las disponibles, una vez seleccionada la BBDD) y la consulta a ejecutar, como por ejemplo la selección de todos los registros de la tabla ordenados por un criterio determinado.

xojo inspector

A partir de ahí, el usuario ya solo tendrá que utilizar los elementos gráficos proporcionados por el control para avanzar y retroceder registro a registro o bien hacia el último o primer registro del recordset. Será mediante los botones adicionales (u otros controles) añadidos al proyecto como podremos insertar, modificar o borrar registros. Así de simple.

Generación de informes

Por último, asociado al uso de bases de datos este tipo de aplicaciones también precisan de elementos que faciliten la generación de informes, y en este sentido Xojo también ofrece un buen conjunto de clases dirigido a la creación y tratamiento de este informes a partir de las consultas realizadas sobre nuestras bases de datos.

xojo informes

Junto a ello también encontramos un Diseñador de Informes que facilitan la elaboración del diseño para nuestros informes (elementos de cabecera, cuerpo, pie, etc.)

Comentarios cerrados
Inicio