10.10. Acceso a bases de datos con SQLite desde C#.
SQLite es un gestor de bases de datos de pequeño tamaño, que emplea SQL para las consultas, y del que existe una versión que se distribuye como un fichero DLL que acompañará al ejecutable de nuestro programa, o bien como un fichero en C que se podría integrar directamente en dicho ejecutable (si usamos lenguaje C en nuestro proyecto).
Para acceder a SQLite desde C#, tenemos disponible alguna adaptación de la biblioteca original. Una de ellas de es System.Data,SQLite, disponible en http://sqlite.phxsoftware.com/
Con ella, los pasos a seguir para leer información desde una base de datos serían:
- Crear una conexión a la base de datos, mediante un objeto de la clase SQLiteConnection, en cuyo constructor indicaremos detalles como la ruta del fichero, la versión de SQLite, y si el fichero se debe crear o ya existe.
- Con un objeto de la clase SQLiteCommand detallaremos cual es la orden SQL a ejecutar, y la lanzaremos con ExecuteReader.
- Con "Read", leeremos cada dato (devuelve un bool que indica si se ha conseguido leer correctamente), y accederemos a los campos de cada dato como parte de un array: dato[0] será el primer campo, dato[1] será el segundo y así sucesivamente.
- Finalmente cerraremos la conexión con Close:
using System; using System.Data.SQLite; //Utilizamos la DLL public class pruebaSQLite { public static void Main() { //Creamos la conexion a la BD. El Data Source contiene la ruta del archivo de la BD SQLiteConnection conexion = new SQLiteConnection ("Data Source=prueba.sqlite;Version=3;New=False;Compress=True;"); conexion.Open(); //Lanzamos la consulta y preparamos la estructura para leer datos string consulta = "select * from gente"; SQLiteCommand cmd = new SQLiteCommand(consulta, conexion); SQLiteDataReader datos = cmd.ExecuteReader(); // Leemos los datos de forma repetitiva while (datos.Read()) { string nombre = Convert.ToString(datos[0]); int edad = Convert.ToInt32(datos[1]); // Y los mostramos System.Console.WriteLine("Nombre: {0}, edad: {1}", nombre, edad); } // Finalmente, cerramos la conexion conexion.Close(); } }