FAQ: Conexión con base de datos en ASP.NET con C#
Vamos a ver de manera sencilla como mostrar el contenido de una tabla de Access en una página Web.
Para simplificarlo utilizaremos como entorno de desarrollo el Web Matrix de Microsoft, un entorno de programación sencillo y gratuito que facilita el aprendizaje de ASP.NET.
En este ejemplo mostramos de manera simplificada como utilizar los 3 objetos que componen la jerarquía de ADO.NET para acceder a los datos de una base de datos, de manera similar a como se accedía a los datos en el “viejo” ADO.
Estos tres objetos son OleDbConnection, OleDbCommand y OleDbDataReader.
Para ver como funciona lo mejor es ver el código, que tiene suficientes comentarios como para que sea de fácil compresión.
El código tal y como está se puede pegar dentro de la ventana “All” del Web Matrix, colocar la base de datos datos.mdb en la misma carpeta en la que guardamos el archivo, y para finalizar ejecutar la página.
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
void Page_Load(object sender, System.EventArgs e)
{
// Empezamos declarando una variable de tipo OleDbConnection, que nos servirá
// para crear la conexión con la base de datos.
// Podemos acceder a esta clase porque hemos importado el espacio de nombres
// System.Data.OleDb
OleDbConnection conn;
// Una vez declarada podemos instanciarla y para ello utilizamos el contructor
// de la clase. Como argumento le pasamos al constructor un string
// que es la cadena de conexión para acceder a una base de datos de access
// de nombre datos.mdb y que se encuentra en la misma carpeta que
// el archivo en el que estamos trabajando
conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=datos.mdb");
// Esta no es una forma muy habitual de declarar e instanciar. Lo habitaul son
// expresiones del tipo
// OleDbConnection connconn = new OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=datos.mdb");
// pero en este fichero vamos detallar todos los pasos lo más posible
// El siguiente paso es tener una sentencia SQL que ejecutar
// Para ello declarams una variable de tipo string y le damos un valor
string sSQL;
sSQL = "SELECT Nombre, Edad, Email FROM Agenda";
// El siguiente paso será crear un objeto de tipo OleDbCommand que servirá
// para enviar una sentencia SQL a la base de datos a través de la conexión
// previamente creada
// declaramos la variable
OleDbCommand cmd;
// la instanciamos, y en el contructor le indicamos la sentencia SQL
// que queremos ejecutar. Asimismo le decimos la conexión a través de la cual
// vamos a trabajar.
cmd = new OleDbCommand(sSQL,conn);
// Cuando ejecutamos la sentencia SQL a través del objeto command, la base
// de datos nos devuelve el conjunto de filas que son el resultado
// de esa ejecución. Para recoger este resultado vamos a utilizar un objeto
// OleDbDataReader que nos permite recorrer, solo hacia delante, las filas
// devueltas por la base de datos
OleDbDataReader miDataReader;
// Ahora abrimos la conexión con la base de datos para poder ejectuar el command
conn.Open();
// y ejecutamos el OleDbCommand recogiendo los resultados en nuestro DataReader
miDataReader = cmd.ExecuteReader();
// Ahora vamos a recorrer el DataReader. Para ello utilizamos un bucle do while
// que tiene como condición el resultado de llamar al método Read del
// DataReader. Este método devolverá true si hay una siguiente fila que leer
// y además la leerá para que poder leer el contenido de esa fila
while(miDataReader.Read())
{
// mientras recorremos el data reader vamos a rellenar la tabla que hemos
// creado en diseño, nuestra "laTabla"
// Crearemos una fila, las columnas de esa fila y añadiremos la fila a la tabla
TableRow fila;
fila=new TableRow();
// Declaramos la celda
TableCell celda;
// Creamos una celda
celda=new TableCell();
// Usamos un control literal, que básicamente sirve para almacenar
// texto. Este control lo añadiremos a la colección de controles
// de la celda en cuestión
LiteralControl textoCelda;
textoCelda= new LiteralControl();
// Le damos valor al LiteralControl leyendo del DataReader
textoCelda.Text=miDataReader["Nombre"].ToString();
celda.Controls.Add(textoCelda);
// y añadimos la celda recien creada a la fila
fila.Cells.Add(celda);
// Hacemos lo mismo para el segundo campo de esta fila
celda=new TableCell();
textoCelda= new LiteralControl();
textoCelda.Text=miDataReader["Edad"].ToString();
celda.Controls.Add(textoCelda);
fila.Cells.Add(celda);
// y para el tercer campo
celda=new TableCell();
textoCelda= new LiteralControl();
textoCelda.Text=miDataReader["Email"].ToString();
celda.Controls.Add(textoCelda);
fila.Cells.Add(celda);
// Para finalizar añadimos la fila a la tabla
laTabla.Rows.Add(fila);
}
// Para acabar cerramos la conexión, y por supuesto el DataReader
conn.Close();
miDataReader.Close();
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<!-- Esta es la tabla que se ejecuta en el servidor y que programaremos desde el código -->
<asp:Table id="laTabla" runat="server" BorderWidth ="1"
GridLines="Both" CellPadding="5"></asp:Table>
</form>
</body>
</html>
Por supuesto esto sólo es un principio, pero espero que os sirva.