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();
        }
    }
}

Reacciones:

0 comentarios:

Publicar un comentario