C# LOGIN CON FORMULARIO WINDOWS C# + SQL SERVER / CAPAS

Hola que tal, en esta ocasión vengo a traer el código fuente sobre Login usando el lenguaje de programación C#, Base de Datos SQL SERVER formularios windows en Visual Studio.

La base de datos tendra lo siguiente:
CREATE DATABASE LoginSql
 GO
 USE LoginSql
 GO
 CREATE TABLE TRABAJADOR(
 DNI     CHAR(8) PRIMARY KEY,
 Acceso    varchar(20) NOT NULL,
 Usuario    varchar(20) NOT NULL,
 Password   varchar(20) NOT NULL, 
 )
 GO
 --insertar trabajadores
 insert into TRABAJADOR values('70247826','Administrador','admin','admin')
 insert into TRABAJADOR values('70247145','Vendedor','vende','vende')
 select * from TRABAJADOR
 GO
 --Procedimiento almacenado Login Trabajador
 create proc spu_login_Trabajador
 @Usuario varchar(20),
 @Password varchar(20)
 as
 select DNI,Acceso from TRABAJADOR
 where Usuario=@Usuario and
 Password=(select Password from TRABAJADOR where Usuario=@Usuario)
 GO
Crearemos un proyecto C# Windows Forms en mi caso de nombre le puse login.
El modelo de capas sera el siguiente:

Crearemos 3 Bibliotecas de clases: CapaDatos, CapaEntidad, CapaReglas. 4 Clases: CDTrabajador, Conexion, CETrabajador, CRTrabajador. No olvidar las referencias

Clase Conexion:
public class Conexion
    {
        string cadena = "Data Source=.;Initial Catalog=LoginSql; user=sa; password=sql2014;Integrated Security=false";
        public SqlConnection conexionDB = new SqlConnection();
        public Conexion()
        {
            conexionDB.ConnectionString = cadena;
        }
        public string abrirDB()
        {
            string valor = "";
            try
            {
                conexionDB.Open();
            }
            catch (Exception e)
            {
                valor = e.Message;
            }
            return valor;
        }
        public void cerrarDB()
        {
            conexionDB.Close();
        }
    }
Clase CETrabajador:
public class CETrabajador
    {   String dni;
        String acceso;
        String usuario;
        String password;
        public String DNI { set; get; }
        public String Acceso { get; set; }
        public String Usuario { get; set; }
        public String Password { get; set; }
        public CETrabajador()
        {}
        public CETrabajador(string dni, string acceso, string usuario, string password)
        {   this.dni = dni;
            this.acceso = acceso;
            this.usuario = usuario;
            this.password = password;
        }
    }
Clase CDTrabajador:
public class CDTrabajador
    {
        CETrabajador t = new CETrabajador();
        Conexion cx = new Conexion();
        public DataTable Login(CETrabajador Trabajador)
        {
            DataTable DtResultado = new DataTable("TRABAJADOR");
            try
            {
                SqlCommand cmd = new SqlCommand("dbo.spu_login_Trabajador", cx.conexionDB);
                cmd.CommandText = "dbo.spu_login_Trabajador";
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@Usuario", SqlDbType.VarChar, 20);
                cmd.Parameters["@Usuario"].Value = Trabajador.Usuario;

                cmd.Parameters.Add("@Password", SqlDbType.VarChar, 20);
                cmd.Parameters["@Password"].Value = Trabajador.Password;
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                SqlDataAdapter sqldat = new SqlDataAdapter(cmd);
                sqldat.Fill(DtResultado);
            }
            catch (Exception ex)
            {
                DtResultado = null;
            }
            return DtResultado;
        }
    }
Clase CRTrabajador:
public class CRTrabajador
    {
        public static DataTable Login(string usuario, string password)
        {
            CDTrabajador tdi = new CDTrabajador();
            CETrabajador obj = new CETrabajador();
            obj.Usuario = usuario;
            obj.Password = password;
            return tdi.Login(obj);
        }
    }
El formulario sera el siguiente:

Usaremos 4 Label (Login, label4, Usuario, Password), 2 TextBox(TxtUsuario, TxtPassword), 2 Button (BtnIngresar, BtnSalir), 1 Timer y opcional 1 PictureBox

Código del Formulario:
public partial class Login : Form
    {
        public Login()
        {
            InitializeComponent();
            LblHora.Text = DateTime.Now.ToString();
        }

        private void BtnIngresar_Click(object sender, EventArgs e)
        {
            //DataTable almacena filas y columnas de datos
            DataTable Datos = CapaReglas.CRTrabajador.Login(this.TxtUsuario.Text, this.TxtPassword.Text);
            //Evaluar si existe el Usuario rows 'filas' count contador
            if (Datos.Rows.Count == 0)
            {
                MessageBox.Show("No Tiene Acceso al Sistema", "Aplicación Login", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("Bienvenido al Sistema", "Aplicación Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void BtnSalir_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            LblHora.Text = DateTime.Now.ToString();
        }
    }






Comentarios