jueves, 14 de enero de 2021

Dos opciones para almacenar datos de manera local en proyectos .netcore

 



Buscando algunas alternativas rápidas para almacenar datos en un proyecto que estaba realizando encontré LiteDB una base de datos que podemos agregar a nuestros proyectos y manejarla de manera local. Claro todos o muchos ya conocemos SQLite que podemos usarla para el almacenamiento de datos con el mismo principio.

Una de las razones por las que quería buscar otra alternativa a SQLite era que la última versión con la que había trabajado no permitía crear bases de datos encriptadas o con contraseña. Sin embargo, encontré que la versión 3 se puede usar contraseñas para manejar la base de datos.

Bueno cual es la diferencia entre estas dos bases de datos. Lo primero que debemos saber es que SQLite funciona no solo para .net podemos usarla en otros lenguajes de programación como Java. Además, es muy popular para el desarrollo de disipativos móviles. Esta base de datos nos permite guardar la información junto a nuestra app sin tener que instalar un gran motor de base de datos. Es muy rápida y podemos almacenar muchos datos.

Los datos son almacenados en como cualquier otra base de datos basada en SQL y las consultas o transacciones en general utiliza el lenguaje de SQL para poder manipular los datos. Por otro lado, se puede usar en varios sistemas operativos.

Ahora por otro lado LiteDB es también una base de datos que se puede manejar empotrada en las aplicaciones como SQLite. Pero esta base de datos es un poco más similar a mongo. Podemos utilizar Json para almacenar la información dentro de nuestra base de datos.

Una desventaja que tiene esta base de datos es que solo funciona para proyectos .net pero puede correr en cualquier sistema operativo que deseamos. Con las pruebas que he realizado en esta base de datos es muy rápido a la hora de guardar y leer los datos. Al podemos utilizar Json hace que muchas veces manipular ciertos tipos de datos sea más sencillo, ya que no tenemos que crear las estructuras y se puede cambiar fácilmente en cualquier momento.

Me gusta mucho la idea que permite utilizar contraseñas y además tiene varias formas para proteger la información. Cuando creamos la información de conexión podemos seleccionar cual algoritmo de seguridad queremos usar para que esta proteja nuestra base de datos.

LiteDB cuenta con un administrador de base de datos con el que podemos explorar los datos de manera fácil y simple. Para poder usarla solo se debe de instalar una librería usando nuget. Como muchas otras bases de datos de este tipo también se crea un único archivo para administrar la información que deseamos guardar.

Finalmente, esta última base de datos también soporte lenguaje de SQL y expresiones de Linq para poder tener acceso a la información o manipularla en general. Yo de momento estoy usando LiteDB que me parece muy interesante y más fácil de usar para este tipo de proyectos, pero creo que se puede lograr el mismo resultado con SQLite (esta es mucho más popular). Al final seleccionar alguna de las dos depende del gusto de cada uno y puede que explorar cuanta documentación tenga ayude a tomar la decisión.  

Donde podemos encontrar estas bases de datos

Litedb

SQLite


Etiquetas: , , ,

lunes, 28 de diciembre de 2020

Java SQLite



SQLite es una base de datos pequeña con la que podemos almacenar datos de manera rápida y fácil. Esta base de datos podemos empotrarla dentro de nuestras aplicaciones y tiene característica muy importante hoy en día, que nos permite correrla en casi cualquier sistema operativo. Podemos usarla para aplicaciones web, móviles y de escritorio.   Además, es una base de datos gratuita.

Podemos encontrarla en el siguiente enlace https://www.sqlite.org/index.html

Tenemos varias formas para crear nuestra aplicación y que se pueda conectar a SQLite. Podemos hacer una aplicación en Netbeans y descargar el Jar que nos permite conectarnos o podemos hacer un proyecto con Maven.

Para este ejemplo vamos a utilizar Maven. Sin embargo, se puede descargar el JAR de SQLite para poder utilizarlo en otros proyectos que no estén basados en Maven.

Cuando ya tenemos nuestro proyecto de Maven listo tenemos que agregar la referencia del Jar, de la siguiente manera.



Ahora vamos a crear una clase llamada SQLiteConnection donde se requiere agregar algunas clases para poder crear la conexión y las consultas a la base de datos.



Con estas clases agregadas a nuestro código ya podemos iniciar con la creación de la conexión



Primero como se puede ver en la línea 19 tenemos que agregar la dirección donde se encuentra o se va a encontrar nuestra base de datos (si no existe el archivo se va a crear cuando se corra nuestra aplicación). Para ubicar la base de datos usamos el path que maneja el sistema operativo que usamos. Ahora si solamente agregamos el nombre de la base de datos como la tenemos en la línea 19 esta se va a crear donde está ubicada nuestra aplicación.

En la línea 24 vamos a registrar el driver de SQL que vamos a usar para nuestra base de datos en este caso como se puede observar es el de SQLite.

Luego en la línea 25 iniciamos una conexión a nuestra base de datos usando la clase DriveManager. Como se puede observar se debe indicar donde esta ubicada la base de datos.

Como se puede ver en la siguiente imagen ya estamos listos para crear tablas en nuestra base de datos. Lo primero que vamos a hacer es crear el script para la creación de la tabla.



En la línea 37 creamos un objeto Statement basado en la conexión que ya teníamos. Con esto podemos ejecutar el script para crear la tabla como se puede observar en la línea 38. Esta última línea nos permite crear la tabla si no existe.

Bueno y para agregar datos en nuestra tabla es simplemente ejecutar un script con un insert como se puede ver en la siguiente imagen.

 



En la línea 46 se crea el script con los datos que deseamos almacenar en nuestra tabla. En la línea 49 se crea el objeto statement basado en la conexión de la base de datos. Luego de esto en la línea 50 ejecutamos el script contra nuestra base de datos para poder guardar la información.


Finalmente vamos a poder crear los SELECT para poder ver los datos que se almacenaron en nuestra base de datos. En este caso cambian algunas cosas. Por ejemplo, además del objeto statement y la ejecución del script tenemos que crear un objeto de tipo ResultSet para obtener la información de nuestra tabla. En la línea 59 se ejecutar el script como se puede observar y este nos retorna un objeto con los datos almacenados. Para poder recorrer todos los nombres usamos un ciclo While hasta que todos los objetos de esta consulta son mostrados.

En la línea 61 se muestra línea por línea los nombres y los ids que se generaron para nuestros datos. Usando el método getString (se puede usar otro tipo de método para cada tipo de dato por ejemplo getInt).

Solo nos queda correr nuestra aplicación para poder ver el resultado


Ejemplo

Etiquetas: , , , ,