Sei sulla pagina 1di 3

insertar usuarios.

---se crea el procedimiento almacenado create procedure insertarusurios ---se declaran los parametros que usaremos @nombre varchar(50),@apellido varchar(50),@pais varchar(50) as ---se hace un insert a la tabla usuarios y se envian los parametros insert into usuarios values(@nombre,@apellido,@pais) eliminar usuarios. ---se crea el procedimiento para eliminar usuarios create procedure elminar_usuarios ---se declaran los parametros que usaremos @nombre varchar(50),@apellido varchar(50) as ---se hace un delete a la tabla usuarios con los parametros que declaramos delete usuarios where nombre=@nombre and apellido=@apellido

using using using using using using using using using

Cdigo de la aplicacin: System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; System.Data.SqlClient;//libreriaparamanejarsql

namespace Personal { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnguardar_Click(object sender, EventArgs e) { //declaramos una cadena de conexin con los datos de nuestro //manejador y la base de datos string cadenaconexion = @"Data Source=HUGUITO-PC\HUGO;Initial Catalog=Prueba;Integrated Security=True"; //una variable boleana para determinar si se realiz la operacin //que realiza el procedimiento almacenado, la inicializamos como false bool success = false; //declrarmos la conexin SqlConnection LaConexion = null; //declaramos una transaccin para que todo lo que se realiza en ella, desde una //simple insercin hasta multiples o, que involucren ms operaciones sobre la //base de datos puedan deshacerse si se presenta un error SqlTransaction LaTransaccion = null; //variable para el valor de retorno int Valor_Retornado = 0; //iniciamos un try catch try { //seguimos con la conexion LaConexion = new SqlConnection(); //asignamos a la conexin la cadena de conexin que declaramos anteriormente LaConexion.ConnectionString = cadenaconexion; //se abre la conexin LaConexion.Open(); //se inicia la transaccin LaTransaccion = LaConexion.BeginTransaction(System.Data.IsolationLevel.Serializable); //especificamos el comando, en este caso el nombre del Procedimiento Almacenado SqlCommand comando = new SqlCommand("SPPersonal", LaConexion, LaTransaccion); //se indica al tipo de comando que es de tipo procedimiento almacenado comando.CommandType = CommandType.StoredProcedure;

//se limpian los parmetros comando.Parameters.Clear(); //comenzamos a mandar cada uno de los parmetros, deben de enviarse en el //tipo de datos que coincida en sql server por ejemplo c# es string en sql server es varchar() comando.Parameters.AddWithValue("@Nombre", txtnombre.Text); comando.Parameters.AddWithValue("@Apellp", txtapellp.Text); comando.Parameters.AddWithValue("@Apellm", txtapellm.Text); comando.Parameters.AddWithValue("@Edad",Convert.ToInt32(txtedad.Text)); comando.Parameters.AddWithValue("@Sexo", cboxsexo.SelectedItem); //declaramos el parmetro de retorno SqlParameter ValorRetorno = newSqlParameter("@Comprobacion", SqlDbType.Int); //asignamos el valor de retorno ValorRetorno.Direction = ParameterDirection.Output; comando.Parameters.Add(ValorRetorno); //executamos la consulta comando.ExecuteNonQuery(); // traemos el valor de retorno Valor_Retornado =Convert.ToInt32(ValorRetorno.Value); //dependiendo del valor de retorno se asigna la variable success //si el procedimiento retorna un 1 la operacin se realiz con xito //de no ser as se mantiene en false y pr lo tanto fall la operacin if (Valor_Retornado ==1) success = true; } catch (Exception) { //al ocurrir un error mostramos un mensaje MessageBox.Show("Error en la operacin", "Error",MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { //si el procedimeinto se efectu con xito if (success) { //se realiza la transaccin LaTransaccion.Commit(); //cerramos la conexin LaConexion.Close(); //mensaje de operacin satisfactoria MessageBox.Show("Persona guardada\nsatisfactoriamente", "Aviso", MessageBoxButtons.OK,MessageBoxIcon.Information); } //si se present algun error else { //se deshace la transaccin LaTransaccion.Rollback(); //cerramos la conexin LaConexion.Close(); } } }

} } Base de datos con las tres tablas y el procedimiento almacenado: create database Prueba go use Prueba go create table Menores ( ID_Menores int primary key identity(1,1), Nombre_M varchar(30) not null, Apellp_M varchar(20) not null, Apellm_M varchar(20) not null, Sexo_M char(1) not null,

Fecha_Reg_M date not null ) create table Adultos ( ID_Adutos int primary key identity(1,1), Nombre_A varchar(30) not null, Apellp_A varchar(20) not null, Apellm_A varchar(20) not null, Sexo_A char(1) not null, Fecha_Reg_A date not null ) create table Adulto_Mayor ( ID_Mayores int primary key identity(1,1), Nombre_AM varchar(30) not null, Apellp_AM varchar(20) not null, Apellm_AM varchar(20) not null, Sexo_AM char(1) not null, Fecha_Reg_AM date not null ) create procedure SPPersonal ( @Nombre varchar(30), @Apellp varchar(20), @Apellm varchar(20), @Edad int, @Sexo char(1), @Comprobacion int output ) as begin --inicia la transaccin begin transaction --inician las comparaciones de edad para determinar donde insertar a la persona --si existe un error al insertar se pasa a la parte de error if(@Edad<18) begin INSERT INTOMenores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)VALUES(@Nombre,@Ape llp,@Apellm,@Sexo,GETDATE()) if @@ERROR>0 goto error end else if(@Edad>=18 and @Edad<65) begin INSERT INTOAdultos(Nombre_A,Apellp_A,Apellm_A,Sexo_A,Fecha_Reg_A)VALUES(@Nombre,@Ape llp,@Apellm,@Sexo,GETDATE()) if @@ERROR>0 goto error end else if(@Edad>=65) begin INSERT INTOMenores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)VALUES(@Nombre,@Ape llp,@Apellm,@Sexo,GETDATE()) if @@ERROR>0 goto error end --si no hubo errores se termina la transaccin y se asigna a @Comprobacion el valor de 1 --para indicar en c# que fue exitosa la operacin commit transaction set @Comprobacion=1 return --si hubo algn error se deshace la transaccin y se asigna a @Comprobacin el valor de 0 --para indicar en c# que hubo un error error: rollback transaction set @Comprobacion=0 end

Potrebbero piacerti anche