C# y procedimientos almacenados de SQL Server


En este ejemplo, voy a trabajar con Windows Forms y con Procedimientos almacenados de SQL Server. El trabajo fue realizado por uno de mis alumnos (Miguel Caviedes) y funciona en SQL Server 2005 y 2008 (debería funcionar en 2000 o superior).

Para bajarse el ejemplo haga click en el siguiente link:
Download ejemplo.  y luego  en la página del link haga click en el botón c# como indica la figura:



Este ejemplo puede ser usado también con WPF.
Lo que hace este ejemplo es insertar nombres, apellidos, emails y direcciones al presionar el botón Nuevo Registro.



Figura 1. Formulario
Primeramente, voy a crearme una tabla de SQL Server de clientes:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[cliente](
     [idCliente] [bigint] IDENTITY(1,1) NOT NULL,
     [nombres] [nchar](50) COLLATE Modern_Spanish_CI_AS NULL,
     [apellidos] [nchar](50) COLLATE Modern_Spanish_CI_AS NULL,
     [direccion] [nchar](50) COLLATE Modern_Spanish_CI_AS NULL,
     [email] [nchar](100) COLLATE Modern_Spanish_CI_AS NULL,
 CONSTRAINT [PK_cliente] PRIMARY KEY CLUSTERED
(
     [idCliente] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Luego, creamos algunos datos en la tabla (ese trabajito les dejo como tarea).
Ahora, voy a crear un procedimiento almacenado que inserta datos en mi tabla de clientes:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertarCliente]
     
      @nombres nchar(50),
      @apellidos nchar(50),
      @direccion nchar(50),
      @email nchar(100)
AS
      Insert into cliente values
(@nombres,
@apellidos,
@direccion,
@email)

Finalmente, en C# hacemos una llamada al procedimiento almacenado.
El código sería el siguiente:

private void button4_Click(object sender, EventArgs e)
        {        
            try
            {
                string ConnectionString = ”Data Source=.\SQLEXPRESS;Initial Catalog=MiBD;Integrated Security=True”;
                SqlConnection cnn = new SqlConnection(ConnectionString);
                SqlCommand cmd = new SqlCommand("InsertarCliente", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@nombres", SqlDbType.Char, 50);
                cmd.Parameters.Add("@apellidos", SqlDbType.Char, 50);
                cmd.Parameters.Add("@direccion", SqlDbType.Char, 50);
                cmd.Parameters.Add("@email", SqlDbType.Char, 100);
                cmd.Parameters["@nombres"].Value = textBox2.Text;
                cmd.Parameters["@apellidos"].Value = textBox3.Text;
                cmd.Parameters["@direccion"].Value = textBox4.Text;
                cmd.Parameters["@email"].Value = textBox5.Text;
                cnn.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Los datos fueron insertados correctamente");
                cnn.Close();
                this.button4.Visible = false;
                this.button1.Visible = true;
                CargarClientes();
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
}

Comentarios

  1. Otra forma de como realizar procedimientos almacenados y aplicando un modelo en capas podria ser de la siguiente manera

    http://hwongu.blogspot.com/2011/02/c-aplicacion-de-escritorio-sistemas-de.html
    http://hwongu.blogspot.com/2011/02/c-aplicacion-de-escritorio-sistemas-de_22.html

    Saludos

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

The Deep Sea: una web interactiva para explorar las profundidades el mar y descubrir las extrañas criaturas que viven en él

Detectar el usuario de Windows utilizando C#

Lo nuevo de SQL Server 2008 respecto a SQL Server 2005