miércoles, 15 de mayo de 2019

Crear Login WPF C#

Hola a todos espero se encuentre muy bien, después de mucho tiempo sin actualizar mi blog(por muchas razones, estudio,trabajo, proyectos personales. etc.). Agradezco a todos los que me escriben haciéndome consultas y agradeciendo por compartir mis conocimientos y pues aunque ha pasado mucho tiempo que no subo nada al blog aun me siguen escribiendo y pues aprovecho la ocasión para enviarles un saludo y decirles que de ahora en adelante tratare de ir contestando sus dudas o preguntas que me hacen llegar por medio de este blog. Tratare de estar haciendo entre 1 y 3 artículos al mes.

Bueno después de esta aclaración, vamos a lo que nos apasiona que es programar, en este articulo veremos como crear un Login en WPF usando C# y que este me muestre el nombre del usuario que a iniciado sesión. que es una de las consultas que me hacia un lector de mi blog  así que manos a la obra.

El ejemplo lo he realizado usando SQL SERVER 2014 EXPRESS y VS 2017

La base de datos que ocupare en esta ocasión se llama Usuarios y solo cuenta con una tabla Usuario




Lo primero que aremos sera crear nuestro proyecto WPF en Visual Studio




Creamos el diseño de nuestro formulario
    
<Window x:Class="LoginWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LoginWPF"
        mc:Ignorable="d"
        Title="LOGIN " Height="400" Width="400" FontSize="14" Background="Black" WindowStartupLocation="CenterScreen">
    <Border Background="WhiteSmoke" CornerRadius="20" Margin="20">
        <StackPanel Margin="20">
            <Label Foreground="Black" FontSize="25" HorizontalAlignment="Center" >
                <Bold> Login</Bold>
            </Label>
            <Separator Background="Black"></Separator>
            <Label Foreground="Blue" >
                <Bold>Usuario</Bold>
            </Label>
            <TextBox Name="txtUsuario" Foreground="Black" FontSize="18"></TextBox>
            <Label Foreground="Blue">
                <Bold> Contraseña</Bold>
            </Label>
            <PasswordBox Name="txtPasword" Foreground="Black" FontSize="18"></PasswordBox>
            <Button Name="btnEntrar" Margin="60 10" Background="#545d6a" Foreground="Black" Height="50" Click="btnEntrar_Click"> Entrar</Button>
        </StackPanel>
    </Border>
</Window>


Ahora que ya tenemos nuestro diseño, agregaremos nuestra cadena de conexión a nuestro archivo App.config(como siempre lo hemos hecho en mis anteriores artículos)
  < connectionStrings> 
    < add name="default"
       connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Usuarios.mdf;Integrated Security=True;User Instance=True"
        providerName="System.Data.SqlClient" />
  < /connectionStrings>   

Lo siguiente que aremos es agregar una clase a nuestro proyecto en donde manejaremos el código de nuestro login para tenerlo de una manera mas ordenado(ademas de ser una de las mejores practicas de POO)



El código que tendrá nuestra clase sera el siguiente
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace LoginWPF
{
    class Autenticacion
    {
       //variable nos sevira para obtener el nombre de usuario logeado
        public static string Nombre;
        public static bool Autenticar(string usuario, string password)
        {
            //consulta a la base de datos
            string sql = @"SELECT nombre
                          FROM Usuario
                          WHERE usuario = @user AND password = @pass";
            //cadena conexion  definida en AppConfig
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
            {
                conn.Open();//abrimos conexion

                SqlCommand cmd = new SqlCommand(sql, conn); //ejecutamos la instruccion
                cmd.Parameters.AddWithValue("@user", usuario); //enviamos los parametros
                cmd.Parameters.AddWithValue("@pass", password);

                //creamos el adaptador

                SqlDataAdapter da = new SqlDataAdapter(cmd);

                DataTable dt = new DataTable();
                da.Fill(dt);
                //valido si encruentra datos
                if (dt.Rows.Count > 0)
                {
                    DataRow row = dt.Rows[0];
                    Nombre = Convert.ToString(row["nombre"]);//guardo el campo nombre de usuario logeado
                    return true;
                }
                else
                    return false;
 
            }
        }
    }
}

Lo primero que hacemos es declarar una variable llamada nombre que nos servirá para obtener el nombre del usuario que inicio sesión. Luego tenemos un método Autenticar de tipo bool que recibe 2 parámetros usuario y password que serán los datos que consultaremos en la bd para verificar si son correctos o no. El método nos retornara verdadero si los datos ingresados son correctos, y si son correctos guarda en la variable Nombre el nombre del usuario que inicio sesión.

 Importante: dentro de esta clase que creamos agregar la referencia System.Configuration

Ahora dentro del evento click del botón entrar tendremos el siguiente código
        private void btnEntrar_Click(object sender, RoutedEventArgs e)
        {
            //validamos datos ingresados llamando nuestro metodo Autenticar de la clase Autenticacion
            if(Autenticacion.Autenticar(txtUsuario.Text,txtPasword.Password))
            {
                //si los datos son correctos muestro nombre de usuario
                MessageBox.Show("Bienvenido:" + Autenticacion.Nombre);
            }
            else
            {
                //si los datos no son correctos
                MessageBox.Show("Ingrese Datos Correctos");
            }

        } 

Como pueden ver lo único que hacemos es invocar el método Autenticar de la clase que creamos Autenticacion y le enviamos como argumentos los datos de las cajas de textbox, si los datos son correctos mostramos un mensaje con el nombre del usuario y si son incorrectos le mostramos un mensaje para que ingrese los datos correctos.



Bueno eso seria todo espero le sea útil, en los próximos artículos estaré poniendo ejemplos de java para android y un poco de php saludos desde El Salvador...

Descargar Proyecto C#

Si quieren donarme para una soda lo pueden hacer aqui.


0 comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.