A modo de ejemplo nosotros vamos a trabajar con un repositorio de datos más accesible, como por ejemplo: Excel.

Vamos a leer y guardar información en un archivo de Excel trabajándolo desde ASP.NET. Lo primero que debemos hacer es crear un libro de Excel como vemos en la imagen. Ahora la llamaremos “Personas”, y le daremos títulos a las tres primeras columnas: Nombre, Apellido y Edad.

Nuestro libro de Excel lo llamaremos LibroExcel.xlsx y lo vamos a guardar en el raíz del disco C. C:\LibroExcel.xlsx

Es importante la creación correcta de este libro de Excel ya que lo vamos a utilizar como base de datos. Donde cada hoja será una tabla y cada columna con titulo serán los campos. Ahora que tenemos nuestra base de datos llamada LibroExcel con la tabla Personas y sus campos: Nombre, Apellido y Edad.

Trabajando con DATOS desde ASP.NET

Vamos a crear un WebForm llamado ADO.aspx y le colocamos:

  • 3 objetos: Label
  • 3 objetos: TexBox
  • 1 botón
  • 1 GridView
<@ Page Language="C#" AutoEventWireup="true" CodeFile="ADO.aspx.cs" Inherits="ADO" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.style1{width: 100%;}
.style2{width: 86px; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="style1">
<tr>
<td class="style2">
<asp:Label ID="lblNombre" runat="server" Font-Names="Arial" Font-Size="10pt"
Text="Nombre"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtNombre" runat="server" Width="205px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
<asp:Label ID="lblApellido" runat="server" Font-Names="Arial" Font-Size="10pt"
Text="Apellido"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtApellido" runat="server" Width="205px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
<asp:Label ID="lblEdad" runat="server" Font-Names="Arial" Font-Size="10pt"
Text="Edad"></sp:Label>
</td>
<td>
<asp:TextBox ID="txtEdad" runat="server" Width="40px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
&amp;nbsp;</td>
<td>
<asp:Label ID="lblMensajes" runat="server" Font-Bold="True" Font-Names="Arial"
Font-Size="10pt" ForeColor="Red"></asp:Label>
</td>
</tr>
</table>
<asp:Button ID="btnGuardar" runat="server" onclick="btnGuardar_Click"
Text="Guardar" />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<br />
<br />
</div>
</form>
</body>
</html>

Les muestro como se ve este formulario.

La grilla aún no tiene datos, por eso no se muestra en pantalla. Este formulario solo tiene una acción y está asociada al botón:

<asp:Button ID="btnGuardar" runat="server"
onclick="btnGuardar_Click"
Text="Guardar" />

El botón lo que hace es guardar el contenido de los campos en nuestra base de datos en Excel. Vamos a sumar más facilidades que nos provee .NET para el acceso a datos, utilizaremos la librería System.Data.OleDb que contiene objetos para conectar y ejecutar acciones sobre la conexión. Los objetos nuevos son:

using System.Data.OleDb;
OleDbConnection
OleDbCommand
OleDbDataAdapter

using System.Data; DataTable

Veamos como se utilizan estos objetos de conexión en la práctica.

Las funcionalidades básicas son dos: Leer y escribir, entonces vamos a armar dos métodos para responder a estas necesidades.

Método Leer ():

Necesita una cadena de conexión ¿qué es eso? debemos decirle que proveedor de datos vamos a necesitar, donde está la fuente y de qué tipo es.

@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\LibroExcel.xlsx; Extended Properties=""Excel 12.0 Xml; HDR=YES;""";

Si no tienen este proveedor instalado lo pueden descargar gratis del centro de descarga de Microsoft  (Access Database Engine). Luego establecemos la conexión y levantamos datos del Excel. Por último bajamos los datos a un DataTable y lo enlazamos con nuestro GridView para ver los datos en pantalla.

private void Leer()
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\LibroExcel.xlsx; Extended Properties=""Excel 12.0 Xml; HDR=YES;""";
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Personas$]", conn);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}

Método Escribir ():

La forma de acceder a los datos es similar al leer con la diferencia que en lugar de usar un DataAdapter vamos a usar un DbCommand para insertar los nuevos datos en nuestra base.

private void Escribir()
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\LibroExcel.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES;""";
OleDbConnection conn = new OleDbConnection(connectionString);
string insert = "Insert into [Personas$] (Nombre,Apellido,Edad) Values (?,?,?)";
OleDbCommand insertCommand = new OleDbCommand(insert, conn);
try
{
insertCommand.Parameters.Add("Nombre", OleDbType.VarChar).Value = txtNombre.Text;
insertCommand.Parameters.Add("Apellido", OleDbType.VarChar).Value = txtApellido.Text;
if (IsNumeric(txtEdad.Text))
{
insertCommand.Parameters.Add("Edad", OleDbType.Integer).Value = Convert.ToInt32(txtEdad.Text);
}
else
{
throw new Exception("La edad debe ser numerica");
}
conn.Open();
int count = insertCommand.ExecuteNonQuery();
}
catch (OleDbException ex)
{
lblMensajes.Text = ex.Message;
}
catch (Exception ex)
{
lblMensajes.Text = ex.Message;
}
finally
{
conn.Close();
}
}

Ya tenemos los dos métodos mas importantes ahora debemos llamarlos desde el botón (método escribir) y desde el Page_Load (evento leer).

protected void Page_Load(object sender, EventArgs e)
{
Leer();
}
protected void btnGuardar_Click(object sender, EventArgs e)
{
Escribir();
}

Dentro del método Escribir estamos utilizando el método IsNumeric(txtEdad.Text) que ya vimos con anterioridad para comprobar si la edad ingresada es numérica. Así queda en funcionamiento nuestro primer contacto con conexión a datos. Cargamos datos en los campos y presionamos el botón Guardar.

Agregamos un nuevo registro.

Nuestro libro de Excel ahora se verá así.

Capítulos del Tutorial