24 de abril de 2017

Inicio de Sesión (Login) con C Sharp y SQL Server



















Un tutorial sobre cómo desarrollar una aplicación en Visual Studio con el lenguaje de programación C Sharp que permita iniciar sesión e identificar al tipo de usuario en una base de datos, utilizando el sistema de bases de datos Microsoft SQL Server.



Código Fuente 

Script Base de Datos
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
USE master
CREATE DATABASE escuela
GO
USE escuela
CREATE TABLE usuario
(
nombreUsuario nvarchar(20) PRIMARY KEY not null,
contrasena nvarchar(20) not null,
nombre nvarchar(50) not null,
apellidoPaterno nvarchar(50) not null,
apellidoMaterno nvarchar(50),
tipoUsuario nvarchar(20) not null
)
GO
INSERT INTO usuario VALUES('jesus', '123A', 'Jesús', 'Morales', 'Campos', 'Administrador')
INSERT INTO usuario VALUES('roberto', '123456', 'Roberto', 'Castro', 'Morales', 'Profesor')
GO

Clase BaseDatos.cs
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data.SqlClient;

namespace InicioSesion
{
    class BaseDatos
    {
        private string cadenaConexion = "Data Source=JEOVANI-PC; Initial Catalog=escuela; Integrated Security=true;";

        public static string nombreCompleto = "";
        public static string tipoUsuario = "";

        public Boolean iniciarSesion(string nomus, string con)
        {
            nombreCompleto = "";
            tipoUsuario = "";

            SqlConnection conexion = new SqlConnection(cadenaConexion);
            conexion.Open();

            SqlParameter parnomus = new SqlParameter("@nomus", nomus);
            SqlParameter parcon = new SqlParameter("@con", con);

            SqlCommand comando = new SqlCommand("SELECT nombre, apellidoPaterno, apellidoMaterno, tipoUsuario FROM usuario WHERE nombreUsuario = @nomus AND contrasena COLLATE Latin1_General_CS_AS = @con", conexion);
            comando.Parameters.Add(parnomus);
            comando.Parameters.Add(parcon);

            SqlDataReader lector = comando.ExecuteReader();
            while (lector.Read())
            {
                nombreCompleto = lector.GetString(0) + " " + lector.GetString(1) + " " + lector.GetString(2);
                tipoUsuario = lector.GetString(3);
            }

            lector.Close();
            conexion.Close();

            if (String.IsNullOrEmpty(tipoUsuario))
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
}

Form1.cs
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 InicioSesion
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btiniciarsesion_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(tbnombreusuario.Text) && !String.IsNullOrEmpty(tbcontrasena.Text))
            {
                try
                {
                    BaseDatos bd = new BaseDatos();

                    Boolean res = bd.iniciarSesion(tbnombreusuario.Text, tbcontrasena.Text);

                    if (res)
                    {
                        Principal p = new Principal();
                        p.Show();
                        this.Hide();
                    }
                    else
                    {
                        MessageBox.Show("Datos Incorrectos");
                    }
                }
                catch
                {
                    MessageBox.Show("Error");
                }
            }
            else
            {
                MessageBox.Show("Complete los datos");
            }
        }
    }
}

Principal.cs
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 InicioSesion
{
    public partial class Principal : Form
    {
        public Principal()
        {
            InitializeComponent();

            labelusuario.Text = BaseDatos.nombreCompleto;

            if (BaseDatos.tipoUsuario == "Administrador")
            {
                paneladministrador.Visible = true;
                panelprofesor.Visible = false;

            }
            else if (BaseDatos.tipoUsuario == "Profesor")
            {
                paneladministrador.Visible = false;
                panelprofesor.Visible = true;
            }

        }

        private void Principal_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
    }
}

1 comentario:

  1. Hola a todos, He sido renuente a comprar esta tarjeta de cajero en blanco que he oído hablar en línea porque todo parece demasiado bueno para ser verdad, pero me convenció y sorprendió cuando mi amigo en mi lugar de trabajo recibió la tarjeta de América Express Hackers & we ambos lo confirmaron si realmente funciona .. Verdaderamente, la tarjeta trabajó y sin demora lo probé también. Desde entonces he estado retirando $ 10.000 diarios de la tarjeta y el dinero ha estado en mi propia cuenta. Estoy contento de haber dado un intento en el último y esta tarjeta ha cambiado mi vida financieramente sin ser atrapado, es real y realmente funciona y me hizo rico! En lugar de obtener un préstamo, le aconsejaré obtener esta tarjeta de cajero automático en blanco ahora! Este ciudadano de Carmella Raymond de Estados Unidos. Póngase en contacto con los hackers a través de correo electrónico y texto para obtener más información.

    Correo electrónico: americaexpresscard@hotmail.com
    Número de Celular: +1 (518) 460-6400

    ResponderEliminar