Operaciones de Inserción en una Base de Datos SQLite con MonoTouch


Para realizar las operaciones estándar en una base de datos SQLite con MonoTouch, no se necesita nada extra a lo ya conocido en .NET para el manejo de Datos. Pero si eres nuevo en este mundo, te sera de mucha ayuda este post.
Nuestro primer paso es crear una base de datos SQLite idéntica a la que se hace en este post (http://cup-coffe.blogspot.com/2012/01/conectarse-una-base-de-datos-sqlite-con.html) junto con la conexión a la BD, luego crearemos un objeto nuevo que contenga datos de un campeonato:


Championship _championship = new Championship ();
_championship.championshipName = "UEFA EURO 2012";
_championship.championshipStartDate = new DateTime (2012, 6, 8);
_championship.championshipEndDate = new DateTime (2012, 7, 1);
_championship.championshipDescription = "UEFA 2012 Ukraine - Poland";
_championship.championshipHistory = "The joint Poland - Ukraine bid was chosen by a vote of the UEFA Executive Committee at a meeting in Cardiff on 18 April 2007.";
_championship.championshipHost = "Ukraine - Poland";
_championship.championshipId = 1;

Inserción sin Parámetros

Para este caso, vamos a insertar el elemento en la Base de Datos, pero por una cadena SQL simple sin parámetros de ADO.NET:
using (var cmd=connection.CreateCommand()) {
connection.Open ();
cmd.CommandText = "INSERT INTO Championship VALUES((SELECT max(championshipId) FROM Championship)+1,'"
+ _championship.championshipName + "','"
+ _championship.championshipHost + "','"
+ _championship.championshipStartDate.ToShortDateString () + "','"
+ _championship.championshipEndDate.ToShortDateString () + "','"
+ _championship.championshipDescription + "','"
+ _championship.championshipHistory + "')";
int num = cmd.ExecuteNonQuery ();
connection.Close ();
}

Inserción con Parámetros

La inserción con parámetros es un poco mas larga, pero mas limpia en cuanto al manejo de tipos:
using (var cmd=connection.CreateCommand()) {
connection.Open ();
cmd.CommandText = "INSERT INTO Championship VALUES((SELECT max(championshipId) FROM Championship)+1,@Name,@Host,@StarDate,@EndDate,@Description,@History);";
cmd.Parameters.Add (new SqliteParameter ("@Name", DbType.String));
cmd.Parameters.Add (new SqliteParameter ("@Host", DbType.String));
cmd.Parameters.Add (new SqliteParameter ("@StarDate", DbType.DateTime));
cmd.Parameters.Add (new SqliteParameter ("@EndDate", DbType.DateTime));
cmd.Parameters.Add (new SqliteParameter ("@Description", DbType.String));
cmd.Parameters.Add (new SqliteParameter ("@History", DbType.String));
cmd.Parameters [0].Value = _championship.championshipName;
cmd.Parameters [1].Value = _championship.championshipHost;
cmd.Parameters [2].Value = _championship.championshipStartDate;
cmd.Parameters [3].Value = _championship.championshipEndDate;
cmd.Parameters [4].Value = _championship.championshipDescription;
cmd.Parameters [5].Value = _championship.championshipHistory;
int num = cmd.ExecuteNonQuery ();
connection.Close ();
}

Manejo de la llave primaria

Para manejar la llave primaria auto numerable, tenemos 2 formas de hacer, la primera es poniendo NULL:
INSERT INTO t1 VALUES(NULL,123);
En el ejemplo podemos ver que se esta insertando en la Tabla “t1” un valor junto a un NULL que es la llave primaria auto numerable.
La segunda opción(la usada aquí) es consular por el valor mas alto de la tabla en el campo de la llave primaria y luego sumarle 1:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);

Edición y Eliminación

Para la edición de una fila, no es muy complejo, simplemente hay que cambiar la consulta de Insert a Update y en el caso de la eliminación es como sigue:
using (var cmd=connection.CreateCommand()) {
connection.Open ();
cmd.CommandText = "DELETE FROM Championship";
int num = cmd.ExecuteNonQuery ();
connection.Close ();
}

Suerte y espero que les sirva.

Publicar un comentario