Clase SQLite para C#Actualmente estoy trabajando en un proyecto de estudios con C# y SQLite.net con el IDE Visual Studio 2013 Express y en este articulo crearemos una clase SQLite para C# con el fin de simplificar el uso de insert, update, delete, select, uso de combobox y datagrids view.

Para ser sincero, esta es la primera vez que utilizo SQLite así que desde el proceso para crear la base de datos hasta como implementarla en mi proyecto, fue una experiencia nueva que ahora compartiré con ustedes.

Paso 1 (Implementación): En este articulo «Implementar SQLite en .NET» de mi blog  encontraran más información sobre como instalar y referenciar SQLite con .NET, más específicamente en C#, si no lo han hecho aun, léanlo.

Paso 2 (Crear la Base de dato y sus tablas): Existen varias alternativas para esto, desde el mismo C# o desde la consola en SQLite  hasta diversos programas de administración. En mi caso utilice SQLite Administrator, rápido, sencillo y efectivo, aunque existen muchos más, utilicen el que más les acomode.

Creando una Clase SQLite para C#

En mi costumbre de programar, siempre busco maneras o formas de simplificar las cosas y esta no era una excepción por lo cual prepare una clase de SQLite para C# que para bien o para mal pueda ayudarnos con el proceso de consultas de llenar Datagrid, Combobox, realizar búsquedas o insertar borrar y actualizar datos.

En un principio solo incluyo los métodos básicos para realizar consultas en SQLite con C#.

Paso 1-. Creamos una nueva Clase en nuestro proyecto (¿tengo que explicar como?)

dentro de ella añadiremos lo siguiente.

/************************************************************************/
/* Clase SQLite para C# 												*/
/* Autor: Mario Hidalgo García (MarioTi)								*/
/* Web: http://www.apoyoti.com											*/
/*																		*/
/* Si usa, modifica o crea una clase derivada de esta, 					*/
/* Favor conservar los créditos.										*/
/************************************************************************/
using System;
using System.Data.SQLite;

namespace ContadorPersonas
{
    class SQLiteClass
    {
        private SQLiteConnection conex;
        private SQLiteDataReader reader;
        private SQLiteCommand command;
        private SQLiteDataAdapter adaptador;
        //private SQLiteParameter param;
        //private SQLiteTransaction trans;

        public void Conectar()
        {
            conex = new SQLiteConnection("Data Source=dbContador.s3db;Version=3;New=True;Compress=True;");
            conex.Open();
        }

        public void Desconectar()
        {
            command.Dispose();
            if (conex.State.ToString() == "Open")
            {
                conex.Close();
            }
        }

        public SQLiteDataReader Buscar(String cadena)
        {
            command = new SQLiteCommand(cadena, conex);
            reader = command.ExecuteReader();
            return reader;
        }

        public SQLiteDataAdapter Adaptar(String cadena)
        {
            command = new SQLiteCommand(cadena, conex);
            adaptador = new SQLiteDataAdapter(command);
            return adaptador;
        }

        public int Modificar(String cadena)
        {
            int i = 0;

            command = new SQLiteCommand(cadena, conex);
            i = command.ExecuteNonQuery();

            //Regresa el numero de registros (update, delete, insert, etc) realizados
            return i;
        }

    }
}

Cambie la ruta de su base de dato.

Explicando la Clase SQLite para C#

Cabe recordar que es importante haber leído el articulo de «Como implementar SQLite en C#» para que nuestra clase no tenga conflictos de referencias.

¿Me invitas un café?

La clase SQLite para C# es bastante simple, declaramos los atributos Los cuales utilizaremos próximamente en 5 métodos; conectar, desconectar, buscar, adaptar, modificar;

La mejor forma de entender esto es por medio de ejemplo:

Ejemplos de la Clase SQL para C#

Para estos ejemplo, consideramos que tenemos una tabla llamada «Personas» en nuestra base de datos cuyos campos son «id, nombre, sexo, edad»

Primero: creamos el objeto de la clase.

SQLiteClass _midb = new SQLiteClass(); // creamos el objeto de la clase db

Llenar un Combobox con SQLite en .NET

cbUsuario, es nuestro Combobox. (Este código, puede ir en el evento Load() del formulario o donde más les acomode).

            try
            {
                _midb.Conectar(); //conectarse a la SQLite
                SQLiteDataAdapter salas = _midb.Adaptar("SELECT * FROM Personas"); //Cadena de consulta
                //En sala almacenamos los datos y eso es todo ;)

                //Esto seria un ejemplo de datatable para rellenar el combobox
                DataTable datosTabla = new DataTable();
                salas.Fill(datosTabla);
                cbUsuario.DataSource = datosTabla; //Asignamos el Source al combobox en un datatable
                cbUsuario.DisplayMember = "nombre"; //Campo de la db que deseamos mostrar
                cbUsuario.ValueMember = "id"; //Campos que utilizaremos al seleccionar un dato
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se produjo el siguiente error: cbUsuarios\n" + ex.Message.ToString(), "Error de aplicación", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //Controlamos los errores que pudieran ocurrir
            }
            finally
            {
                _midb.Desconectar(); //Si o si, desconectamos la base de datos
            }

¿Fácil?

Lo que realizamos con ese código, fue una simple llamada al método conectar, luego al método adaptar incluyendo la sentencia que deseamos realizar, luego por medio de un datatable rellenamos el combobox para que al final desconectemos la base de datos. si por alguna razón, manda error entonces la base de datos nunca conecto por lo cual el método desconectar() tiene un control que verifica si efectivamente la base de datos estaba abierta antes de intentar cerrarla.

Realizar una búsqueda con SQLite en .NET

El siguiente ejemplo, es una búsqueda simple, que devolverá un mensaje si encuentra una persona en particular y de lo contrario avisara si no encuentra nada.

int count = 1;
            try
            {
                _midb.Conectar(); //conectarse a la db
                SQLiteDataReader respuesta = null;
                respuesta = _midb.Buscar("SELECT * FROM Personas WHERE id =13"); //Cadena de consulta
                //Y eso es todo, respuesta contiene los resultados ;)

                while (respuesta.Read()) // Ingresamos al While, si es que existe
                {
                    // Dejamos el contador en 2 o mas (significa que encontramos elementos)
                    nombre = respuesta[1].ToString();
                    count++;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se produjo el siguiente error: lblpersona()\n" + ex.Message.ToString(), "Error de aplicación", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //Controlamos los errores
            }
            finally
            {
                _midb.Desconectar(); //Desconectamos si o si de la db.
            }
            if (count > 1) MessageBox.Show(nombre);
            else MessageBox.Show("Persona no encontrada");

Este ejemplo en particular, notaran que busca a una persona especifica correspondiente a la id = 13, si el id 13 existe , nos devolverá el nombre, de lo contrario un mensaje.

Modificandolo un poco, pueden hacer consultas mas complejas con los mismos y mejores resultados. queda todo a su imaginación.

Llenar un Datagrid en C# con SQLite

muy similar a cargar un combobox, rellenamos un datagridview con SQLite.

try
            {
                _midb.Conectar(); //conectarse a la SQLite
                SQLiteDataAdapter salas = _midb.Adaptar("SELECT * FROM Areas"); //Cadena de consulta
                //En sala almacenamos los datos y eso es todo ;)

                DataTable DtTabla = new DataTable();

                salas.Fill(DtTabla);
                dgv1.DataSource = DtTabla; //Asignamos el Source al dgv
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se produjo el siguiente error: dgv\n" + ex.Message.ToString(), "Error de aplicación", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //Controlamos los errores que pudieran ocurrir
            }
            finally
            {
                _midb.Desconectar(); //Si o si, desconectamos la base de datos
            }

 

Pronto más ejemplos, de como insertar, actualizar o borrar datos.

Descarga la Clase SQLite para C#: https://mega.co.nz/#!GgARwQKD!ZH8JCRl2ZtnzEPK7k4maVs-4I02Xk3fwzYFO8DaqpzM

Hasta la próxima 😉

 

 

 

Suscribete a nuestra lista

Mantente informado sobre las novedades que ofrecemos en nuestra web, no te llenaremos de Spam ni entregaremos tus datos a terceros.

Gracias por suscribirte a nuestra lista

Pin It on Pinterest

Share This