lunes, 8 de agosto de 2016

Login tipo Google en C# y SQL Server

Hola aqui les comparto una aplicación en C# es un login tipo Google. En esta imagen se muestra la pantalla principal de como quedaria.
Primero que nada les compartire la tabla y los procedimientos almacenados que utilize para esta aplicación la base de datos esta creada en SQL Server.

create table Login
(
   id int primary key identity,
   nombre varchar(50) not null check(nombre <> ''),
   apellidos varchar(50) not null check(apellidos <> ''),
   correo varchar(50) not null check(correo <> ''),
   contra varchar(50) not null check(contra <> ''),
   imagen image
)


create proc spInsertarLogin
@nombre varchar(50),
@apellidos varchar(50),
@correo varchar(50),
@contra varchar(50),
@imagen image
as
 INSERT INTO Login(nombre,apellidos,correo,contra,imagen) VALUES(@nombre,@apellidos,@correo,@contra,@imagen);
go

create proc spMostrarImagen
@correo varchar(50)
as
  SELECT id,nombre,apellidos,correo,imagen FROM Login
  WHERE correo =@correo;
go


create proc spAcceso
@correo varchar(50),
@contra varchar(50)
as
   SELECT * FROM Login
  WHERE correo= @correo AND contra= @contra ;
go
Ahora les compartire nuesta clase Login hecha en C#

class Login
{
        private string nombre;
        private string apellidos;
        private string correo;
        private string contra;
        private PictureBox imagen;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public string Apellidos
        {
            get { return apellidos; }
            set { apellidos = value; }
        }

        public string Correo
        {
            get { return correo; }
            set { correo = value; }
        }

        public string Contra
        {
            get { return contra; }
            set { contra = value; }
        }

        public PictureBox Imagen
        {
            get { return imagen; }
            set { imagen = value; }
        }

        public Login() { }

        public Login(string nom, string ape, string correo, string contra, PictureBox imagen)
        {
            this.Nombre = nom;
            this.Apellidos = ape;
            this.Correo = correo;
            this.Contra = contra;
            this.Imagen = imagen;
        }

        public string InsertarLogin()
        {
            string resp = "";
            SqlConnection sqlCon = new SqlConnection(Conexion.conexion);
            try
            {
                sqlCon.Open();

                SqlCommand sqlCm = new SqlCommand("spInsertarLogin", sqlCon);
                sqlCm.CommandType = CommandType.StoredProcedure;

                sqlCm.Parameters.Add("@nombre", SqlDbType.VarChar).Value = Nombre;
                sqlCm.Parameters.Add("@apellidos", SqlDbType.VarChar).Value = Apellidos;
                sqlCm.Parameters.Add("@correo", SqlDbType.VarChar).Value = Correo;
                sqlCm.Parameters.Add("@contra", SqlDbType.VarChar).Value = Contra;
                sqlCm.Parameters.Add("@imagen", SqlDbType.Image);

                // Stream usado como buffer
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                // Se guarda la imagen en el buffer
                Imagen.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                // Se extraen los bytes del buffer para asignarlos como valor para el parametro
                sqlCm.Parameters["@imagen"].Value = ms.GetBuffer();


                resp = sqlCm.ExecuteNonQuery() == 1 ? "Usuario registrado" : "Error al registrar usuario";


            }
            catch (Exception ex)
            {
                resp = ex.Message;
            }
            finally
            {
                if (sqlCon.State == ConnectionState.Open) sqlCon.Close();
            }

            return resp;
        }


        public DataTable MostrarImagen(string correo)
        {
            DataTable tabla = new DataTable("imagen");
            SqlConnection sqlCon = new SqlConnection(Conexion.conexion);
            try
            {
                SqlCommand sqlCm = new SqlCommand("spMostrarImagen", sqlCon);
                sqlCm.CommandType = CommandType.StoredProcedure;
                sqlCm.Parameters.Add("@correo", SqlDbType.VarChar).Value = correo;

                SqlDataAdapter sqlAdp = new SqlDataAdapter(sqlCm);
                sqlAdp.Fill(tabla);
            }
            catch
            {
                tabla = null;
            }

            return tabla;

        }


        public DataTable Acceder(string correo, string contra)
        {
            DataTable tabla = new DataTable("login");
            SqlConnection sqlCon = new SqlConnection(Conexion.conexion);
            try
            {
                SqlCommand sqlCm = new SqlCommand("spAcceso", sqlCon);
                sqlCm.CommandType = CommandType.StoredProcedure;
                sqlCm.Parameters.Add("@correo", SqlDbType.VarChar).Value = correo;
                sqlCm.Parameters.Add("@contra", SqlDbType.VarChar).Value = contra;

                SqlDataAdapter sqlAdp = new SqlDataAdapter(sqlCm);
                sqlAdp.Fill(tabla);
            }
            catch
            {
                tabla = null;
            }

            return tabla;

        }
}
Como vemos en el código hay un método que se llama MostrarImagen en la primer imagen que mostramos al principio nos pide nuestro correo electrónico al capturar al correo nos muestra como en Google nuestro nombre, correo y la imagen de nuestro perfil y por el último nos pide nuestra contraseña como muestra la siguiente imagen.

 Si nos datos son correctos nos dará acceso al sistema en este aplicación solo se muestra un mensaje de bienvenida.

La aplicación esta validada con los mensajes de Google como lo muestra las siguientes imagenes.



Por último la imagen de como quedo el Form de agregar una cuenta nueva es parecida a la de Google.

Dejar un comentario.
Descargar

No hay comentarios:

Publicar un comentario