Conectarse a una Base de Datos SQLite con MonoTouch (ADO.NET)
El conectarse a SQLite con
MonoTouch no es muy complejo, además si eres un programador con alguna
trayectoria en el acceso de Base de Datos con .NET y, te será fácil de
realizarlo.
Creación de la Base de Datos SQLite
DataReader
En el presente post voy a
mostrarles como se hace el acceso en 2 formas distintas, el primer acceso a
través de un DataReader y el segundo a través de un DataAdapter.
El primer paso para la
conexión es agregar las librerías de acceso a datos proporcionadas por
MonoTouch:
using Mono.Data.Sqlite;
using
System.Data;
La primera librería nos
ofrece las clases y objetos necesarios para realizar la conexión a SQLite,
mientras la segunda librería nos ofrece lo necesario para trabajar con ADO.NET.
Luego crearemos una clase
llamada Championship que tendrá la siguiente estructura:
using System;
namespace
iScoreBoardLibrary
{
//public class Customer : CSObject
public class
Championship
{
public int
championshipId {get; set;}
public string
championshipName {get; set;}
public string
championshipHost {get; set;}
public
DateTime championshipStartDate {get; set;}
public
DateTime championshipEndDate {get; set;}
public string
championshipDescription {get; set;}
public string
championshipHistory {get; set;}
//Constructor
public Championship ()
{
}
}
}
Creación de la Base de Datos SQLite
Para crear la base de
Datos SQLite, lo más fácil es bajarnos un gestor para este, los 2 que
recomiendo son SQLite Studio y SQLite DataBase Browser. Para efectos prácticos
del post usaremos SQLite Studio. Nuestro primer paso es crear una base de datos
nueva (icono del folder) con el nombre iScoreBoard:
El siguiente paso es crear
una tabla llamada Championship, que tenga los mismos campos que nuestra clase
Championship:
Como punto a tomar en
cuenta, es que para la clave principal el tipo de dato debe de ser INTEGER y no
INT, si deseamos que sea auto-numérico.
Luego agregamos algunos
datos de prueba.
DataReader
Como un poco de teoría voy
a poner la definición de un DataReader:
“En ADO.NET, un DataReader
es un amplia categoría de objetos usados generalmente para leer datos de manera
secuencial de una fuente de datos. Un DataReader provee una manera eficiente de
acceder a los datos, parseando un Flujo de Datos Tabulares desde SQL Server o
desde otra base de datos que tenga un conector con .NET. Un DataReader es
usualmente un método de un objeto Command que contiene la consulta SQL con la
cual se consultara la fuente de datos, la conexión con la BD y opcionalmente
algunos parámetros de consulta.”.
Bueno, vayamos al código,
que es como sigue:
connection = new
SqliteConnection ("Data
Source=iScoreBoard.sql");
List _Championships = new
List ();
//Read a Table from Data Base with DataAdapter
using (var cmd =
connection.CreateCommand()) {
connection.Open
();
cmd.CommandText
= "select championshipId,
championshipName from Championship";
using (var reader
= cmd.ExecuteReader()) {
while
(reader.Read()) {
Championship
c = new Championship ();
c.championshipName
= (string)reader ["championshipName"];
_Championships.Add
(c);
}
}
connection.Close
();
}
Analizando el código vemos
que en la primera sentencia tenemos, la conexión a la Base de Datos de nombre
“iScoreBoard” que tiene la terminación .sql (En algunos casos si no funciona
con .sql, podemos probar con .db ó .db3), luego procedemos a crear un comando
llamado cmd que será quien ejecute la consulta. Por ultimo creamos un
DataReader que se llamara reader e iteraremos a través de los datos con un
ciclo While.
DataAdapter
La conexión con un
DataAdapter es un poco más corta, pero a la vez es un poco más lenta en lo
referente a performance, pero cuando se trata de tablas pequeñas no es muy
sustancial a nuestra percepción la mejor de performance. El código es como sigue:
adapter = new SqliteDataAdapter ();
championshipsTable=
new DataTable("Championship");
//Read
a Table from Data Base with a DataAdapter
using (var
cmd=connection.CreateCommand()) {
connection.Open
();
cmd.CommandText
= "select championshipId,
championshipName from Championship";
adapter.SelectCommand
= cmd;
adapter.Fill
(championshipsTable);
connection.Close ();
}
Para ese caso es mucho más
sencillo, simplemente se abre la conexión, luego se define la consulta SQL a
realizarse y se asigna al “adapter”, el comando, para que se haga el llenado de
la tabla a través del método Fill.
Suerte.
Comentarios
Publicar un comentario