sqlite-net

Cómo conectarnos a SQLite en C# con SQLite-NET

SQLite-Net es una biblioteca de código abierto que nos permite trabajar con bases de datos SQLite de manera sencilla y eficiente desde cualquier plataforma que soporte .NET.

SQLite es una biblioteca de código abierto que proporciona un sistema de gestión de bases de datos relacionales (RDBMS) ligero, rápido y eficiente.

A diferencia de otros sistemas de bases de datos relacionales, SQLite se ejecuta completamente en la memoria del dispositivo que lo aloja, lo que lo convierte en una excelente opción para aplicaciones con recursos limitados, como aplicaciones móviles y sistemas integrados.

SQLite-Net es un ORM (Object-Relational Mapping) que facilita la comunicación con bases de datos SQLite. Puede ser una excelente opción para aplicaciones que requieren una base de datos ligera y portable.

Cómo usar SQLite-NET

Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.

Install-Package sqlite-net-pcl

Ya podemos usar SQLite-NET en nuestro proyecto. Por ejemplo, supongamos que tenemos la siguiente clase

public class Person
{
	[PrimaryKey, AutoIncrement]
	public int Id { get; set; }
	public string Name { get; set; }
	public int Age { get; set; }
}

Podemos crear una conexión con la base de datos y crear una tabla de la siguiente forma

var db = new SQLiteConnection("ruta_a_database.db");
db.CreateTable<Person>();

Ahora es muy sencillo realizar operaciones CRUD mediante los comandos Insert, Update, y Delete. Por ejemplo, para insertar un objeto haríamos lo siguiente

var person = new Person() {
	Name = "adam",
	Age = 39
};
	
await db.InsertAsync(person);

Mientras que así podríamos realizar una consulta

var query = db.Table<Person>().Where(v => v.Symbol.StartsWith("A"));

var result = await query.ToListAsync();

foreach (var person in result)
	Console.WriteLine("Person: " + person.Symbol);

O una consulta escalar,

var count = await db.ExecuteScalarAsync<int>("select count(*) from Person");
Console.WriteLine(string.Format("Found '{0}' people", count));

La biblioteca dispone de métodos asíncronos y síncronos. Además de un montón de opciones para personalizar los mapeos entre campos, tablas, y todo ese tipo de funcionalidades que cabría esperar en cualquier ORM moderno.