Autor Tema: 3 capas + procedimiento almacenado c# y sql server  (Leído 16207 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado 3l3cTr0n1k_0

  • Recién llegado
  • *
  • Mensajes: 47
  • Karma: +5/-1
    • Ver Perfil
    • El arte de programar
    • Email
3 capas + procedimiento almacenado c# y sql server
« : diciembre 26, 2009, 05:09:13 pm »
Primero que nada en nuestro proyecto creamos 3 carpeta para separar los modulos


1- Vista Formulario.
2- Transacciones.
3- Base de Datos.



- Creamos nuestro windows form donde tendremos :
 4 - TextBox
 4 - Label
 2 - button

1- Usuario
2- Nombre
3- Password
4- Re-Password


dejemos algo asi :)


-tenemos una clases funciones con pequeñas cosas...

Código: csharp [Seleccionar]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Catedra2
{
    class Funciones
    {
 public Boolean ValidaCamposVacios(string dato)
        {
         //retorna true si es vacio, false si no es vacio
            Boolean valido;
            valido = dato.ToString()== "" ? true : false;
            return valido;
               
        }
       
        public void msj(string texto, string titulo)
        {
           MessageBox.Show(texto.ToString(),titulo.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
  }
}


-El codigo de nuestro Boton guardar sera el siguiente

Código: csharp [Seleccionar]


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Catedra2.transacciones;
//instanciamos nuestra carpeta transacciones para tener disponible sus clases sin importalar mas por la ruta completa...

namespace Catedra2
{
    public partial class Registro : Form
    {
        public Registro()
        {
            InitializeComponent();
        }

  private void butCrearUsuario_Click(object sender, EventArgs e)
        {
            Funciones fun = new Funciones();
            String error = "Verifique los siguientes campos: \n\n";
            int countError = 0;
            if (fun.ValidaCamposVacios(textUsuario.Text))
            {
                error += "* Campo usuarios sin datos.\n";
                countError++;
            }
             if(fun.ValidaCamposVacios(textNombre.Text))
            {
                error += "* Campo Nombre sin datos.\n";
                countError++;
            }
             if (fun.ValidaCamposVacios(textPassword.Text))
            {
                error += "* Campo Password sin datos.\n";
                countError++;
            }
             if (fun.ValidaCamposVacios(textRePassword.Text))
            {
                error += "* Campo Re-Password sin datos.\n";
                countError++;
            }

            else if (textPassword.Text != textRePassword.Text)
            {
                error += "* Contraseñas Incorrectas.\n";
                countError++;
            }
         
            if (countError != 0)
            {
                fun.msj(error, "Opcion Invalida:");
                return;
            }
            else
            {
                //pasamos las validaciones y entramos a trabajar con los datos y sql server

                try
                {
//creamos el objeto con para la clase Conectar de transacciones.
                    Conectar con = new Conectar();
                    if (con.conectar()) //comprueba si ahy coneccion al sql server nada mas xD
                    {     
                        if (con.RegistraUsuarioNuevo(textUsuario.Text.ToString(), textPassword.Text.ToString(), textNombre.Text.ToString()))
                            fun.msj("* Usuario Registrado con Exito.", "Ingreso de usuario");
                        else
                            fun.msj("* Problema al inglresar usuario","Ingreso de usuario");
                    }
                    else
                    {
                        fun.msj("Coneccion rechazada", "Coneccion");
                    }

                }
                catch
                {
                 fun.msj("Instancia de Clase Rechazada", "Coneccion");
                }

            }
        }
   }
}



- En la clase Conectar de nuestra carpeta Transacciones tenemos el siguiente codigo...
Código: csharp [Seleccionar]


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//importamos la carpeta baseDeDatos para tener sus clases en transacciones...
using Catedra2.BaseDeDatos;

namespace Catedra2.transacciones
{
    class Conectar
    {
        Coneccion conec = new Coneccion();
// creamos el objeto conec para la clase Coneccion, como un atributo de esta clase para su ocupacion devemos ocupas   this.conec-> metodos

//funcion que retorna true si la base de dato esta disponible y si no false...
 public Boolean conectar()
        {
            return  this.conec.Conectando() != false ? true : false;
        }

//funcion que recibe los parametro del nuevo usuario. y se los pasa a la base de dato y retorna tambien ;)

        public Boolean RegistraUsuarioNuevo(String user, String password,String nombre)
        {
           return this.conec.IngresaUsuario(user, password,nombre);
        }
   }
}


- En la carpeta Base De Datos  3 capa, Creamos nuestra Clase coneccion

Código: csharp [Seleccionar]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Data.Common;

namespace Catedra2.BaseDeDatos
{
    class Coneccion
    {
        //String de coneccion para nuestro SQL SERVER....
        public String coneccion = "Data Source=MASTER-PC;Initial Catalog=bodega;Integrated Security=True";
   
        public Boolean Conectando()
        {
            try
            {
                SqlConnection cnn = new SqlConnection(this.coneccion);//Probamos que ahy coneccion.
                cnn.Close();//Cerramos la coneccion
                return true;
            }
            catch
            {
                return false;
            }
        }

        public Boolean IngresaUsuario(String user, String password,String nombre)
        {
            if (this.Conectando())//Probamos si ahy coneccion...
            {
                try
                {
                    //creamos nuestra propia coneccion
                    SqlConnection conectado = new SqlConnection(this.coneccion);
                    conectado.Open();
                    SqlCommand coneccion = new SqlCommand();
                    coneccion.Connection = conectado;
                    coneccion.CommandType = System.Data.CommandType.StoredProcedure;
                    coneccion.CommandText = "IngresarUser"; //Nombre de Nuestro Procedimiento Almacenado
                    coneccion.CommandTimeout = 10;
                    coneccion.Parameters.AddWithValue("@user", user);
                    coneccion.Parameters.AddWithValue("@password", password);
                    coneccion.Parameters.AddWithValue("@nombreCompleto", nombre);
                    coneccion.Parameters.AddWithValue("@Estado", "Y");
                    coneccion.ExecuteNonQuery();
                    conectado.Close();
                    return true;

                }
                catch
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
}



- El Script de nuestra Base De Dato es el Siguiente....


Código: csharp [Seleccionar]

USE [Bodega]
GO
/****** Creamos Nuestra Tabla de Usuario Para La base de Dato Bodega en mi Caso ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Usuario](
[IdUsuario] [int] IDENTITY(1,1) NOT NULL,
[Login] [varchar](20) NOT NULL,
[Password] [char](10) NOT NULL,
[NombreCompleto] [varchar](256) NOT NULL,
[Estado] [char](1) NOT NULL,
 CONSTRAINT [PK_Usuario] PRIMARY KEY CLUSTERED
(
[IdUsuario] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

/****** Creamos Nuestro Procedimiento Almacenado ******/


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE IngresarUser
    @user varchar(50),
    @password varchar(50),
    @nombreCompleto varchar(100),
    @Estado   char(1)
AS
BEGIN
SET NOCOUNT ON;
     INSERT INTO [bodega].[dbo].[Usuario]
           ([Login]
           ,[Password]
           ,[NombreCompleto]
           ,[Estado])
     VALUES
         (@user,@password,@nombreCompleto,@Estado);
END
GO

Si has encontrado útil este articulo recuerda que puedes ayudarnos con tu donación voluntaria la cual ayudará al staff y a la mantención del foro.

YO

  • Visitante
Re:3 capas + procedimiento almacenado c# y sql server
« Respuesta #1 : octubre 24, 2013, 06:43:10 pm »
GRACIAS MIL GRACIAS, ME SIRVIO MUUUUUUCHO !!!


. . . . . . . .