LOGIN EN N CAPAS EN C# CON VISUAL STUDIO 2019 Y SQL SERVER


Un login desarrollado en 3 capas (entidad, datos y negocios) y con base de datos.



Base de datos y procedimiento almacenado

Creamos nuestra base de datos BDLogin con la tabla TableLogin (usuario1 y password1) y nuestro procedimiento sp_login con los parámetros @usu y @pas.
Create Database BDLogin
Go

Create table TableLogin
(
usuario1 varchar(50),
password1 varchar(50)
)
Go

create proc sp_login
@usu varchar(50),
@pas varchar(50)
as
select * from TableLogin where usuario1=@usu and password1=@pas
Go

Insert into TableLogin values('paul','paul123')
Insert into TableLogin values('VaidrollTeam','VaidrollTeam123')

select * from TableLogin

Capa entidad

En nuestro procedimiento almacenado hay 2 parámetros (@usu y @pas) en la capa entidad también debe tener 2 (usu1 y pas1), de esta manera se podrá comprobar el usuario y contraseña del formulario a la base de datos.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary_E
{
    public class Class1
    {
        public String usu1 { get; set; }
        public String pas1 { get; set; }
    }
}

Capa datos

Referencia a la capa entidad, System.Configuration, System.Data.SqlClient y System.Data. estas referencias son necesarias para realizar la conexión y traer el procedimiento almacenado del SQL Server.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace ClassLibrary_D
{
    public class Class1
    {
    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["sql"].ConnectionString);
        public DataTable D_Login(ClassLibrary_E.Class1 obje)
        {
            SqlCommand cmd = new SqlCommand("sp_login", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@usu", obje.usu1);
            cmd.Parameters.AddWithValue("@pas", obje.pas1);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dtable1 = new DataTable();
            da.Fill(dtable1);
            return dtable1;
        }

    }
}

Capa negocios

Referencia a la capa datos, entidad e invocamos a la función D_Login que anteriormente fue creado.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data;
namespace ClassLibrary_N
{
    public class Class1
    {
        ClassLibrary_D.Class1 objd = new ClassLibrary_D.Class1();

        public DataTable N_login(ClassLibrary_E.Class1 obje) 
        {
            return objd.D_Login(obje);
        }
    
    }
}

Formulario principal

Referencia a la capa entidad y negocios, el texto ingresado en los TextBox usuario y contraseña harán uso de los valores creados en capa entidad usu1 y pas1 para comprobar si existe alguna coincidencia con los datos de la tabla TableLogin, si hay una coincidencia permitirá pasar al usuario y se abrirá el formulario secundario.

No te olvides de crear el formulario secundario para que se muestre luego de iniciar sesión.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        ClassLibrary_E.Class1 obje = new ClassLibrary_E.Class1();
        ClassLibrary_N.Class1 objn = new ClassLibrary_N.Class1();
        public Form1()
        {
            InitializeComponent();
        }

        private void btnsalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btningresar_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            obje.usu1 = txtusuario.Text;
            obje.pas1 = txtpassword.Text;
            dt = objn.N_login(obje);

            if (dt.Rows.Count > 0)
            {
                obje.usu1 = dt.Rows[0][0].ToString();
                obje.pas1 = dt.Rows[0][1].ToString();
                MessageBox.Show("Bienvenido " + obje.usu1, "Mensaje");

                

                Principal pri = new Principal();
                pri.Show();
                txtusuario.Text = "";
                txtpassword.Text = "";
            }
            else 
            {
                MessageBox.Show("Error","Mensaje");
            }
                
        }
    }
}

App config

Realizamos la conexión con la base de datos. ¡Recuerda! 👀el nombre del servidor configurado en mi equipo es "localhost\SQLEXPRESS" el tuyo tal vez sea localhost,localhost\"Nombre de tu equipo", eso revisa al abrir el SQL Server.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <connectionStrings>
    <add name="sql" connectionString="server=localhost\SQLEXPRESS;
         integrated security=true;database=BDLogin"/>
  </connectionStrings>
  
    <startup> 
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
  
  
</configuration>

Posibles errores.

System.ArgumentException
System.Data.SqlClient.SqlException

Si te sale alguno de estos errores es porque no hay conexión con tu base de datos o porque esta mal escrito el nombre del procedimiento o parámetros.

Aquí tienes el vídeo para que puedas ver como se hace paso a paso.



  • Nombre:  Login_ncapas.rar
  • Tamaño: 710 KB

 Descargar 




Tutoriales recomendados