Anda di halaman 1dari 9

Tutorial desde 0: Ejemplo bsico de Acceso a

datos usando ADO.Net


Como dice el titulo del articulo Desde 0, si eres una persona con conocimientos avanzados sobre el tema,
no te recomiendo leer los artculos que dicen desde Cero, por que?, son para principiantes, personas
que apenas se estn iniciando en el mundo de la programacin o personas avanzadas que necesiten aclarar
alguna duda o simplemente mirar alternativas de solucin a algn problema en particular, y por que
escribes cosas tan bsicas? muchos en nuestros inicios, comenzamos a buscar artculos como estos
(bsicos), aunque parecen tontos, son los que nos permiten entender el funcionamiento del lenguaje y
finalmente aprender algo nuevo para luego, si introducirnos a un nivel mas profundo, mucha gente que
escribe en internet supone que todo el que lee sus artculos ya es un gur, desconociendo la realidad de
muchas personas que se estn iniciando en esto.
Explicacin
Abrimos Visual Studio 2005/2008

Creamos un nuevo proyecto

Seleccionamos Visual C# Windows Aplicacin para Windows, escribimos el nombre del proyecto en este
caso he puesto AplicacionADO, por ultimo presionamos el botn aceptar

Al formulario que nos crea por defecto le cambiamos el nombre a frmPrincipal

Tener cuidado con la extensin el archivo debe terminar en .cs (frmPrincipal.cs)


Al cuadro de confirmacin que nos aparece presionamos el botn si

Modificamos la propiedad text del formulario a: Formulario principal


Desde el ToolBox o cuadro de herramientas ubicado en la parte izquierda de Visual Studio agregamos un
control MenuStrip

Creamos el siguiente men:

Creamos el formulario estudiantes, haciendo clic derecho en el proyecto, desde el explorador de objetos
como se muestra en la siguiente imagen:

Al nuevo formulario lo llamaremos frmEstudiantes como se muestra a continuacin:

El formulario frmEstudiantes deber contener los siguientes elementos:

Objeto
GroupBox1 (Dentro de este control irn todos
los siguientes)
Text
labell
TextBox1
label2
TextBox2
label3
TextBox3
label4
TextBox4

Propiedad
name

Valor
GroupBox1

Informacin bsica
name
text
name
name
text
name
name
text
name
name
text
name

lblIdentificacion
Identificacin
txtIdentificacion
lblPri_nom
Primer nombre
txtPri_nom
lblSeg_nom
Segundo nombre
txtSeg_nom
lblPri_ape
Primer apellido
txtPri_ape

label5
TextBox5
label6
ComboBox1
Label7
TextBox6
GroupBox1 (Dentro de este control irn todos
los siguientes)
text
button1
button2
button3
button4
button5
text
button6
text
button7
text
button8
text
button9
text

name
text
name
name
text
name
name
text
name
name
Acciones
name
text
name
text
name
text
name
text
name
Guardar
name
Editar
name
Buscar
name
Eliminar
name
Cerrar

El resultado de lo anterior deber ser un formulario como el siguiente:

lblSeg_ape
Segundo apellido
txtSeg_ape
cboGenero
Genero
cboGenero
lblTelefono
Telfono
txtTelefono
GroupBox2

btnPrimero
<<
btnAnterior
<
btnSiguiente
>
btnUltimo
Ultimo
btnGuardar
btnEditar
btnBuscar
btnEliminar
btnCerrar

Cdigo fuente del formulario:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//Espacio de nombres requerido para interactuar con Sql Server
using System.Data.SqlClient;
namespace
AplicacionADO
{
public partial class frmEstudiantes : Form
{
//Instancias
//Conexion objeto del tipo SqlConnection para conectarnos fisicamente a la base de datos
SqlConnection Conexion = new SqlConnection();
//Comando objeto del tipo SqlCommand para representar instrucciones SQL
SqlCommand Comando;
//Adaptador objeto del tipo SqlDataAdapter para para intercambiar datos entre una
// fuente de datos (en este caso Sql Server) y un alamacen de datos (DataSet, DataTable, DataReader)
SqlDataAdapter Adaptador=null;
//Tabla objeto del tipo DataTable representa una coleccin de registros en memeria del cliente
DataTable Tabla = new DataTable();
//Variables
String Sql=; //Variable de tipo String para almacenar instrucciones SQL
//Variable de tipo String para almacenar el nombre de la Instancia SQLServer
String Servidor = @(local)\SQLEXPRESS;
//Variable de tipo String para almacenar el nombre de la base de datos
String Base_Datos = bd2010;
int indice=0;
//Metodo Conectar *********************************************************************
void Conectar()
{
try
{
//Para establecer la conexion con el servidor debemos usar el objeto Conexion
//especificando a traves de su propiedad ConnectionString el nombre del servidor, la bases de datos
//y el timpo de seguridad
Conexion.ConnectionString=Data Source=+Servidor+; +
Initial Catalog=+Base_Datos+;+
Integrated security=true;
try
//Bloque try catch para captura de exepciones en ejecucin
{
Conexion.Open(); //Abrimos la conexin
}
catch (SqlException ex)
{
MessageBox.Show(Error al tratar de establecer la conexin + ex.Message);
}
}
catch (SqlException ex)
{
MessageBox.Show(Error en la conexin: +ex.Message);
}
}
//*********************************************************************

//Este mtodo recibe como parmetro un ndice correspondiente al registro a cargar


void CargarDatos(int indice)
{
if (Tabla.Rows.Count > 0) //Si el objeto Tabla posee registros procedemos a realizar la asignacin
{
DataRow fila = Tabla.Rows[indice]; //Creamos una fila del Objeto Tabla
//Asignamos los valores correspondientes a cada registro
txtIdentificacion.Text = fila[identificacion].ToString();
txtPri_nom.Text = fila[pri_nom].ToString();
txtSeg_nom.Text = fila[seg_nom].ToString();
txtPri_ape.Text = fila[pri_ape].ToString();
txtSeg_ape.Text = fila[seg_ape].ToString();
cboGenero.Text = fila[genero].ToString();
txtTelefono.Text = fila[telefono].ToString();
txtDireccion.Text = fila[direccion].ToString();
}
else
{
MessageBox.Show(No hay registros para mostrar);
}
}
//Metodo para refrescar el DataTable despues de insertar,modificar o eliminar registros
void RefrescarDatos()
{
//seleccionamos todos los datos de la tabla personal
Sql = select * from estudiantes;
Adaptador = new SqlDataAdapter(Sql,Conexion); //pasamos los parametros al adaptador
Tabla.Clear(); //limpiamos antes de llenar el objeto oTabla
Adaptador.Fill(Tabla); //llenamos la tabla
}
public frmEstudiantes() //Constructor de la clase
{
InitializeComponent();
}
private void frmEstudiantes_Load(object sender, EventArgs e)
{
Conectar();
//Cargamos el obejeto tabla con todos los registros de la tala estudiantes
Sql = select * from estudiantes;
Adaptador = new SqlDataAdapter(Sql, Conexion);
Adaptador.Fill(Tabla);
//Llmamos el metodo CargarDatos para tan pronto se lance el formulario asigne
//a las cajas de texto los valores correspondientes al primer registro de la tabla
CargarDatos(indice);
}
private void btnGuardar_Click(object sender, EventArgs e)
{
//Instruccin SQL
Sql = insert into estudiantes(identificacion, pri_nom, seg_nom, pri_ape, seg_ape, genero, telefono+
, direccion)values(@identificacion,@pri_nom,@seg_nom,@pri_ape,@seg_ape,@genero,@telefono,@direccion);
//Pasamos al objeto comando la instruccin SQL a ejecutar y el objeto Conexion
Comando = new SqlCommand(Sql, Conexion);
Comando.Parameters.AddWithValue(@identificacion,txtIdentificacion.Text);
Comando.Parameters.AddWithValue(@pri_nom,txtPri_nom.Text);
Comando.Parameters.AddWithValue(@seg_nom,txtSeg_nom.Text);
Comando.Parameters.AddWithValue(@pri_ape,txtPri_ape.Text);
Comando.Parameters.AddWithValue(@seg_ape,txtSeg_ape.Text);
Comando.Parameters.AddWithValue(@genero, cboGenero.Text);
Comando.Parameters.AddWithValue(@telefono,txtTelefono.Text);
Comando.Parameters.AddWithValue(@direccion, txtDireccion.Text);

try //Bloque try catch para captura de exepciones en ejecucin


{
Comando.ExecuteNonQuery(); //Ejecutamos la instruccin SQL
MessageBox.Show(Registro insertado);
}
catch (Exception ex)
{
MessageBox.Show(Error: + ex.Message);
}
}
private void btnEditar_Click(object sender, EventArgs e)
{
Sql = update estudiantes set pri_nom=@pri_nom,
seg_nom=@seg_nom,pri_ape=@pri_ape,seg_ape=@seg_ape, genero=@genero, telefono=@telefono,
direccion=@direccion where identificacion=@identificacion;
Comando = new SqlCommand(Sql, Conexion);
Comando.Parameters.AddWithValue(@identificacion,txtIdentificacion.Text);
Comando.Parameters.AddWithValue(@pri_nom, txtPri_nom.Text);
Comando.Parameters.AddWithValue(@seg_nom, txtSeg_nom.Text);
Comando.Parameters.AddWithValue(@pri_ape, txtPri_ape.Text);
Comando.Parameters.AddWithValue(@seg_ape, txtSeg_ape.Text);
Comando.Parameters.AddWithValue(@genero, cboGenero.Text);
Comando.Parameters.AddWithValue(@telefono, txtTelefono.Text);
Comando.Parameters.AddWithValue(@direccion, txtDireccion.Text);
try //Bloque try catch para captura de excepciones en ejecucin
{
Comando.ExecuteNonQuery();
MessageBox.Show(Registro editado);
RefrescarDatos();
}
catch (Exception ex)
{
MessageBox.Show(Error: + ex.Message);
}
}
private void btnCerrar_Click(object sender, EventArgs e)
{
Conexion.Close();
this.Dispose();
}
private void btnBuscar_Click(object sender, EventArgs e)
{
if (Tabla.Rows.Count > 0)
{
int id=int.Parse(txtIdentificacion.Text);
DataRow[] fila = Tabla.Select(String.Format(identificacion={0}, id)); //Buscamos la fila deseada
if (fila.Length > 0)//Si se encontro la fila
{
indice = Tabla.Rows.IndexOf(fila[0]); //Obtenemos el indice la fila buscada
//Pasamos el indice como parametro al metodo CargarDatos
CargarDatos(indice);
}
else
{
MessageBox.Show(El estudiantes que buscas no esta registrado);
}
}
else
{
MessageBox.Show(No hay registros);
}

}
private void btnEliminar_Click(object sender, EventArgs e)
{
Sql = delete from estudiantes where identificacion=@identificacion;
Comando = new SqlCommand(Sql, Conexion);
Comando.Parameters.AddWithValue(@identificacion, txtIdentificacion.Text);
try
//Bloque try catch para captura de excepciones en ejecucin
{
Comando.ExecuteNonQuery();
MessageBox.Show(Registro eliminado);
RefrescarDatos();
}
catch (SqlException ex)
{
MessageBox.Show(Error: + ex.Message);
}
}
private void btnPrimero_Click(object sender, EventArgs e)
{
indice = 0;
CargarDatos(indice);
}
private void btnAnterior_Click(object sender, EventArgs e)
{
if (Tabla.Rows.Count > 0 && indice > 0)
{
indice = indice 1;
CargarDatos(indice);
}
}
private void btnSiguiente_Click(object sender, EventArgs e)
{
if (indice < Tabla.Rows.Count -1)
{
indice = indice + 1;
CargarDatos(indice);
}
}
private void btnUltimo_Click(object sender, EventArgs e)
{
if (Tabla.Rows.Count > 0)
{
indice = Tabla.Rows.Count 1;
CargarDatos(indice);
}
}
}
}

Anda mungkin juga menyukai