En esta sesion vimos una introduccion al uso de bases de datos desde una aplicacion de windows en .NET; especificamente trabajamos con una base de datos en MSAccess.

Nos enfocamos a utilizar las clases OleDbConnection, OleDbCommand, y OleDbDataReader del nombre de espacio System.Data.OleDb.  Nuestra base de datos consta de una sola tabla llamada contactos, con dos campos (email, nombre):

Tabla Contactos

La aplicacion consta de una ventana (Form) similar a esta:

Forma Principal

Esta forma cuenta con..
una lista (ListBox) para desplegar el contenido de la tabla contactos,
2 cajas de texto (TextBox) para agregar un nuevo contacto,
metodos para filtrar el despliegue de contacto en la lista,
boton para borrar el contacto seleccionado.

El codigo detras de esta ventana es el siguiente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace uacj_Contactos
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
private void Form1_Load(object sender, EventArgs e)
  {
  displayContacts("1=1");
  }
private void displayContacts(string filtro) {
  listBox1.Items.Clear();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE ("+filtro+") ORDER BY nombre ASC");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {
  listBox1.Items.Add(reader["nombre"].ToString() + " - " + reader["email"].ToString());
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }

private void button3_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%yahoo.com%'");
  }

private void button4_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%hotmail.com%'");
  }

private void button5_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%"+textBox3.Text+"%'");
  }

private void button1_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("INSERT INTO contactos (email,nombre) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button2_Click(object sender, EventArgs e)
  {
  string[] valores = listBox1.Text.Split('-');
  string email = valores[valores.Length-1].Trim();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("DELETE FROM contactos WHERE (email = '"+email+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }
  }
}

Material de ayuda:

– Proyecto de Visual Studio 2005 (contactos.mdb incluida) Proyecto completo
Nota del archivo: es un .zip pero el blog no me lo acepto asi que lo renombre a .zip.gif; fovor de renombrarlo a .zip para poder extraer su contenido;
Nota 2: copiar la base de datos a C:, o bien, actualizar la ruta en el connectionString del OleDbConnection.

– Ayuda para connectionStrings:  http://www.connectionstrings.com