Usar SQLite en Apps Windows 8.1


Cuando necesitamos guardar datos estructurados que acostumbramos a tener en una base de datos, tenemos unas cuantas alternativas, entre ellas usar SQLite, una librería que incluye un motor SQL sobre un archivo del disco, con relaciones, índices, transacciones e incluso consultas estilo LINQ.

SQLite es una librería nativa, pero gracias a Visual Studio, NuGet y a los desarrolladores de la librería, será muy fácil integrarlo en nuestra aplicación.

Cómo agregar SQLite en nuestra App

El primer paso será descargar el paquete de librerías preparado para Windows Runtime 8.1 de la página de descargas de SQLite.
Debemos buscar el paquete para WinRT 8.1 en la sección Precompiled Binaries for Windows Runtime. Es un archivo .VSIX que podremos instalar como paquete en el Visual Studio.
La versión que he utilizado para este artículo es la 3.8.2 que podéis descargar aquí.

SQLite VSIX

Una vez instalado, en nuestro proyecto C# o VB.Net de la Tienda Windows, añadiremos la referencia a la librería SQLite. Podemos encontrarla en Windows>Extensions:

SQLite Windows Runtime Libraries

Este paquete nos incluirá la librería SQLite 3, pero esta librería es nativa y no se puede utilizar directamente desde C# o VB.Net. Para empezar a usarla necesitaremos una clase que encapsule las llamadas. Por suerte ya está hecha, basta descargar sqlite-net a través de NuGet:

sqlite-net NuGet Package

Este paquete instala dos archivos c# que nos hacen de puente con la librería y nos permiten ejecutar consultas contra una base de datos sqlite:
sqlite.cs

Ejemplo de uso

Ya sólo nos queda crear una base de datos, empezar a grabar y a consultar datos. Como es un archivo local, tendremos que copiar una .db existente o bien crear una dentro del sistema de archivos de la aplicación (nos sirven tanto la carpeta temporal como la local). Aquí vemos un pequeño ejemplo de definición, creación e inserción.

public class Person{
    [SQLite.PrimaryKey,SQLite.AutoIncrement]
    public int Id { get; set; }

    [SQLite.MaxLength(50)]
    public string Name { get; set; }

    [SQLite.MaxLength(50)]
    public string Surname { get; set; }

}

private async void createDB()
{
    var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var conn = new SQLite.SQLiteAsyncConnection(
        System.IO.Path.Combine( folder.Path,"test.db"));
    
    await conn.CreateTableAsync<Person>();            
}

private async Task insertPersonAsync(string name, string surname)
{
    var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var conn = new SQLite.SQLiteAsyncConnection(
        System.IO.Path.Combine(folder.Path, "test.db"))
    await conn.InsertAsync(new Person { Name = name, Surname = surname });
}
Anuncios

  1. Al

    Esta explicacion es para Visual Studio 2012 o 2013? Porque creo que ese paquete WinRT 8.1 que comentas en el primer punto no es para Visual Studio 2013.

    • jmservera

      Hola Al,
      Es para Visual Studio 2013, las aplicaciones de Windows 8.1 sólo se pueden crear desde 2013. Es importante que descargues los binarios para 8.1 de SQLite, si descargas otros no funcionará.

      • Ramon

        para jmservera,
        He probado anadir las references de System.Data.Sqlite.dll a un proyecto de Visual Studio 2013 y me da error de version.
        Sabes si es seguro que SQLite ha sido corregido para Visual Studio 2013?. Hay alguna razon por la que me de ese error, si es cierto que ya esta adaptado SQLite a VS 2013?
        Gracias

  2. Carlos

    Hola amigo!
    Estoy trabajando en llevar mi app de Windows 8 a 8.1, Windows Phone 8, 8.1 y agregar el soporte para Windows Phone 7.1 pero he visto que no puedo usar un mismo gestor cómo SQLite en todos, tienes alguna sugerencia o solo debo desarrollar las de Windows 8 con Sqlite y no añadir soporte para WindowsPhone 7.1?
    En este momento trabajo en cuatro versiones de la app, viendo que ahora puedo tener aplicaciones universales quizas reduzca el numero. Un saludo!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s