> Manuales > Manual de Microsoft WebMatrix

En este artículo conoceremos cómo podemos introducir y consumir información en nuestras bases de datos.

En el anterior artículo sobre cómo manejar datos con WebMatrix aprendimos cómo crear tablas y columnas, así como la forma de insertar información para hacer pruebas o consolidar datos maestros. En este artículo conoceremos cómo podemos introducir y consumir información en nuestras bases de datos.

1. Introducir información

Partiremos de la tabla Post que creamos en el artículo anterior y veremos cómo introducir datos en ella mediante código, que es el procedimiento que habitualmente seguiremos. Para ello, vamos a crear una página nueva, "Postear.cshtml", que servirá para introducir un nuevo post en la base de datos. El código de esta página sería algo parecido a esto:

@{
Layout = "/Compartido/_Maestra.cshtml";
PageData["Titulo"] = "Postear";

if (IsPost)
{
var db = Database.Open("Mi Blog");
var sentenciaInsercion =
"INSERT INTO Post (Titulo, Contenido, Autor, Fecha) VALUES (@0, @1, @2, @3)";

db.Execute(sentenciaInsercion,
Request["titulo"],
Request["contenido"],
Request["autor"],
DateTime.Now.ToString());
var id = db.GetLastInsertId();
Response.Redirect(@Href("/MostrarPost?PostId=" + id));
}
}

<form method="post" action="">
<table>
<tr>
<td><label>Titulo</label></td>
<td>
<input type="text" name="titulo" size="52"
value="@Request["titulo"]"/>
</td>
</tr>
<tr>
<td><label>Contenido</label></td>
<td>
<textarea name="contenido" rows="15" cols="40"
value="@Request["contenido"]"></textarea>
</td>
</tr>
<tr>
<td><label>Autor</label></td>
<td>
<input type="text" name="autor" size="52"
value="@Request["autor"]"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Publicar" />
</td>
</tr>
</table>
</form>
Empecemos analizando el HTML. Se compone de una tabla con 3 campos para introducir título, contenido y autor, más un botón para procesar la información. Cuando pulsemos el botón, el posteo se realizará sobre la propia página, y ahí entrará en juego el código que hemos definido en la parte superior.

Analicemos cada uno de los pasos que están descritos y qué métodos están involucrados:

  1. En primer lugar, definimos que sólo se ejecutará este código si la petición a la página se ha realizado mediante HTTP-POST, al estar comprobándose a variable "IsPost", que nos indica si hemos llegado a la página mediante una petición de este tipo.
  2. En caso de que estemos ejecutando una petición por POST, abrimos una conexión con la base de datos mediante el método Open de la clase Database, pasándole como parámetro el nombre de dicha base de datos. Un detalle, la clase DateTime contiene una propiedad "Now" que nos devuelve la fecha de ese instante, ideal para poder indicar en qué momento hemos insertado el post.
  3. Una vez abierta la conexión, escribimos la sentencia SQL que queremos ejecutar y se la pasamos al método Execute, junto con los parámetros que hemos definido en dicha sentencia. Estos valores los obtenemos de Request, que es donde los hemos situado con el HTML que acompaña a la página (campos "value" de las etiquetas input y textarea)
  4. Recuperamos el ID que la base de datos nos ha generado para esta nueva fila en la tabla Post. Recordemos que hemos definido la columna PostId como identidad en nuestra tabla, lo que significa que SQL Server CE se encargará de generar un valor para ella con cada nueva inserción.
  5. Por último, realizamos una redirección a una página pasándole como parámetro este id. Utilizamos el método Href para calcular la URL de una forma independiente del navegador que esté renderizando la página, y recurrimos a Response.Redirect para hacer efectiva la redirección.
Idealmente, la página MostrarPost se encargaría de enseñarnos el resultado de la información que hemos introducido, ya convenientemente formateada. Para ello, deberíamos recuperar de la base de datos la información previamente insertada. Veamos cómo podríamos hacer eso.

2. Consultar información

Necesitamos poder leer información en las tablas de nuestra base de datos, así como mostrarla a través de un fragmento de código HTML. A continuación un ejemplo de ambas necesidades combinadas para generar una página con información dinámica.

@{
var db = Database.Open("Mi Blog");
var consulta =
"SELECT Titulo, Contenido, Autor, Fecha FROM Post WHERE PostId = @0";
var postInfo = db.QuerySingle(consulta, Request["PostId"]);
}

<h1>@postInfo.Titulo</h1>
<h3> publicado el @postInfo.Fecha por @postInfo.Autor</h3>
<div style="border: .2em dotted #900; width:350">
@postInfo.Contenido
</div>

El HTML de nuevo es lo más sencillo posible, puesto que no es objeto de estos artículos poner el acento sobre cómo realizar una página web vistosa. Como se ve, mostramos la información que contiene un objeto llamado postInfo; en concreto, los campos Titulo, Fecha, Autor y Contenido. Pero, ¿cómo hemos obtenido este objeto postInfo? Echemos un ojo al código en la parte superior.

En primer lugar, abrimos una conexión a la base de datos y creamos una sentencia SQL como ya hemos aprendido en la sección anterior. La diferencia es que ahora no vamos a ejecutar sino consultar nuestra base de datos. Existen tres métodos distintos para realizar esta operación:

Ya sabemos que nuestra fila está contenida en el objeto postInfo. No es difícil imaginar que, dinámicamente, nuestro código es capaz de inferir cómo se llaman las columnas que queremos consultar y crea propiedades en este objeto, para que podamos acceder a los valores concretos de esta fila por sus nombres, en lugar de tener que utilizar engorrosos índices basados en la posición de la columna, algo mucho más propenso a errores y menos legible.

El resultado de nuestra página MostrarPost.cshtml podemos verlo en la siguiente imagen:

3. Conclusiones

En estos dos artículos hemos visto todo el tratamiento de datos que podemos hacer en WebMatrix y que nos cubre más del 80% de los escenarios. Si en anterior aprendimos a definir nuestro esquema de base de datos, en éste hemos podido comprobar qué fácil es insertar y consultar información.

Javier Holguera

Desarrollador senior con tecnología .NET en Payvision.

Manual