You are on page 1of 14

TUTORIAL BD C- SHARP Creacin de un proyecto que me permita insertar, buscar, eliminar y actualizar un registro. 1.

Para empezar debemos crear un nuevo proyecto en visual Studio as. -file (archivo)/new proyect (nuevo proyecto).

Luego seleccionamos el tipo de proyecto y posteriormente la plantilla. Tipo de proyecto: visual C# Plantilla: Windows Aplication Nombramos nuestro proyecto, seleccionamos la carpeta destino y agregamos para finalizar.

2. Nos aparecer un Form, para empezar nos trabajaremos en el.

3. Como primer paso, agregaremos un nuevo elemento en este caso una base de datos, la cual llamaremos Biblioteca

4. Al agregar la BD nos aparecer la siguiente ventana

Seleccionamos el botn Cancelar, ya que esta es utilizada solo si se trabajara con DataSets, en este caso no los utilizaremos.

5. Luego de haber Creado nuestro elemento BD, creamos una tabla en explorador de servidores en la cual ingresaremos y modificaremos los datos la cual se llamara Libros.

Agregamos los siguientes campos y la guardamos. Para este ejercicio el campo Cod_libro, se especifico como auto numrico

6. Luego de haber creado la tabla creamos una clase y la nombramos Funciones, debido a que esta contendr todas las funciones de insertar, borrar, modificar y buscar registros. Para trabajar con BD en M-SQL, debemos emplear las siguientes libreras:
using System.Data; using System.Data.Sql; using System.Data.SqlClient;

La clase quedara as:


using using using using using using System; System.Collections.Generic; System.Text; System.Data; System.Data.Sql; System.Data.SqlClient;

namespace Biblioteca{ public class Conexion{ }

7. A continuacin crearemos los Procedimientos almacenados para cada funcin y posteriormente agregaremos los mtodos a nuestra clase que me permitir utilizarlos. Antes de agregar cdigo a nuestra clase Funciones.cs debemos declarar el objeto conexin que me permitir acceder a la BD en todos los mtodos que sea necesario. Finalmente modificamos la clase y quedara as:
using using using using using using using System; System.Collections.Generic; System.Text; System.Data; System.Data.Sql; System.Data.OleDb; System.Data.SqlClient;

namespace Biblioteca{ public class Conexion{ //cadena ruta static String ConexionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename='D:\visual studio\proyectos\Proyectos\Biblioteca\Biblioteca.mdf';Integrated Security=True;User Instance=True"; static SqlConnection conexion = new qlConnection(ConexionString);//objeto conexion

8. Procedimientos y metodos Nota: los mtodos se agregan a la clase Funciones.cs. SP_Insertar_registro:


ALTER PROCEDURE SP_AgregarRegistro @titulo_libro nchar(30), @autor_libro nchar(30), @editorial_libro nchar(30) AS insert into Libros(titulo_libro,autor_libro,editorial_libro) values(@titulo_libro,@autor_libro,@editorial_libro) RETURN

Metodo:
public int insertar_R( String Procedure,String titulo,String autor,String editorial) { //creo el manipulador de comandos SqlCommand Com_Insert = new SqlCommand(Procedure,conexion); Com_Insert.CommandType= CommandType.StoredProcedure;//se establece el tipo de comando a utilizar int res =new int(); //agregamos los datos correspondientes //(1/3) SqlParameter parametro = Com_Insert.Parameters.Add("@titulo_libro",SqlDbType.NChar,30);//se inserta el dato parametro.Direction = ParameterDirection.Input;//se direcciona el dato parametro.Value = titulo;//se especifica el dato que ingresara //(2/3) parametro = Com_Insert.Parameters.Add("@autor_libro", SqlDbType.NChar, 30);//se inserta el dato parametro.Direction = ParameterDirection.Input;//se direcciona el dato parametro.Value = autor;//se especifica el dato que ingresara //(3/3) parametro = Com_Insert.Parameters.Add("@editorial_libro", SqlDbType.NChar, 30);//se inserta el dato parametro.Direction = ParameterDirection.Input;//se direcciona el dato parametro.Value = editorial;//se especifica el dato que ingresara //se establece la cnexion try{ conexion.Open(); res=Com_Insert.ExecuteNonQuery(); } catch(Exception e){ Console.WriteLine("error de conexion",e.Message);

} finally{ conexion.Close(); } return res; }

SP_Buscar_registro:
ALTER PROCEDURE SP_traerRegistro @Cod_libro int, @titulo_libro nchar(30) output, @autor_libro nchar(30) output AS Select @titulo_libro=titulo_libro, @autor_libro=autor_libro From Libros where Cod_libro=@Cod_libro RETURN

Metodo:
public String Traer_Registro(String StoredProcedure,int codigo) { //objeto comando SqlCommand Com_Select = new SqlCommand(StoredProcedure,conexion); //se estable el tipo de comando Com_Select.CommandType = CommandType.StoredProcedure; //creo el manipulador de parametros SqlParameter parametro = Com_Select.Parameters.Add("@Cod_libro",SqlDbType.Int); parametro.Direction = ParameterDirection.Input;//el input me permite insertar datos parametro.Value = codigo; parametro = Com_Select.Parameters.Add("@titulo_libro", SqlDbType.NChar,30); parametro.Direction = ParameterDirection.Output; parametro = Com_Select.Parameters.Add("@autor_libro", SqlDbType.NChar,30); parametro.Direction = ParameterDirection.Output;//la sentencia output me permite la salida de datos try { //se establece la conexion conexion.Open(); //se ejecuta el comando int r=Com_Select.ExecuteNonQuery(); //se retornan los parametros

string titulo = Com_Select.Parameters["@titulo_libro"].Value.ToString(); string autor = Com_Select.Parameters["@autor_libro"].Value.ToString(); return "titulo: " + titulo + "autor: " + autor; } catch (Exception e) { Console.WriteLine("error de conexion", e.Message); } finally { conexion.Close(); } return null; }

SP_Actualizar_registro:
ALTER PROCEDURE SP_ActualizarRegistro @Cod_libro int, @titulo_libro nchar(30), @autor_libro nchar(30), @editorial_libro nchar(30) AS update Libros set titulo_libro=@titulo_libro, autor_libro=@autor_libro, editorial_libro=@editorial_libro where Cod_libro=@Cod_libro RETURN

Metodo:
public int Actualizar_reg(String StoredProcedure,int codigo,String titulo,String autor,String editorial) { //objeto Comando SqlCommand Com_Update = new SqlCommand(StoredProcedure,conexion); Com_Update.CommandType = CommandType.StoredProcedure; int res=new int();

//insertamos los parametros SqlParameter parametro = Com_Update.Parameters.Add("@Cod_libro",SqlDbType.Int); parametro.Direction = ParameterDirection.Input; parametro.Value = codigo; parametro = Com_Update.Parameters.Add("@titulo_libro", SqlDbType.NChar,30); parametro.Direction = ParameterDirection.Input; parametro.Value = titulo; parametro = Com_Update.Parameters.Add("@autor_libro", SqlDbType.NChar,30); parametro.Direction = ParameterDirection.Input; parametro.Value = autor; parametro = Com_Update.Parameters.Add("@editorial_libro", SqlDbType.NChar,30); parametro.Direction = ParameterDirection.Input; parametro.Value = editorial; try { //se establece la conexion conexion.Open(); //se ejecuta el comando res= Com_Update.ExecuteNonQuery(); //se retornan los parametros } catch (Exception e) { Console.WriteLine("error de conexion", e.Message); } finally { conexion.Close(); } return res; }

SP_Borrar_Registro
ALTER PROCEDURE SP_BorrarRegistro @Cod_libro int AS Delete From Libros where Cod_libro=@Cod_libro RETURN

Metodo:
public int Borrar_reg(string StoredProcedure,int codigo) { SqlCommand Com_Delete = new SqlCommand(StoredProcedure,conexion); Com_Delete.CommandType = CommandType.StoredProcedure; int res = new int(); SqlParameter parametro = Com_Delete.Parameters.Add("@Cod_libro",SqlDbType.Int); parametro.Direction = ParameterDirection.Input; parametro.Value = codigo; try { //se establece la conexion conexion.Open(); //se ejecuta el comando res = Com_Delete.ExecuteNonQuery(); //se retornan los parametros } catch (Exception e) { Console.WriteLine("error de conexion", e.Message); } finally { conexion.Close(); } return res; }

9. Luego de haber concluido lo anterior retomamos al Form y agregamos los siguientes controles de modo que quede de la siguiente forma.

Recuerda nombrar cada uno de los controles, en la propiedad name; esto te dar un poco mas de orden. Luego en la clase del Form crea un objeto Funciones que te permita utilizarlo dentro del mismo, As tambin agrega los eventos para cada botn. La clase Form quedara as:
using using using using using using using System.ComponentModel; System.Data; System.Data.Sql; System.Data.SqlClient; System.Drawing; System.Text; System.Windows.Forms;

namespace Biblioteca { public partial class Form1 : Form { Conexion Funcion = new Conexion(); public Form1() { InitializeComponent(); } //Boton insertar R private void button1_Click(object sender, EventArgs e){ int r=Funcion.insertar_R("SP_AgregarRegistro", this.txttitulo.Text, this.txtautor.Text, this.txteditorial.Text); if(r==1){ this.txtresultado.Text = "REGISTRO ALMACENADO"; } else{ this.txtresultado.Text = "ERROR"; } } //Boton Buscar R private void buscar_Click(object sender, EventArgs e){ this.txtresultado.Text = Funcion.Traer_Registro("SP_traerRegistro", int.Parse(this.txtcodigo.Text)); } //Boton Actualizar private void Actualizar_Click(object sender, EventArgs e){ int r= Funcion.Actualizar_reg("SP_ActualizarRegistro",int.Parse( this.txtcodigo.Text), this.txttitulo.Text, this.txtautor.Text, this.txteditorial.Text); if (r == 1){ this.txtresultado.Text = "REGISTRO ACTUALIZADO"; } else { this.txtresultado.Text = "ERROR"; } }

//Boton Borrar R private void borrar_Click(object sender, EventArgs e){ int r = Funcion.Borrar_reg("SP_BorrarRegistro", int.Parse(this.txtcodigo.Text)); if(r==1){ this.txtresultado.Text = "REGISTRO ELIMINADO"; } else{ this.txtresultado.Text = "ERROR AL BORRAR"; } }

} }

10. Nuestra aplicacin ya est terminada si compilamos resultara algo as:

Ejecutable:Proyectos\Biblioteca\bin\Debug\Biblioteca.exe Autor: Henry Ruiz Semestre: 4 T_Sistemas

You might also like