jueves, 4 de octubre de 2012

Login usuario C# .net y SQL Server con Dataset

Aqui les presentare una de tantas formas que hay de hacer un formulario de login el cual va a checar en su  base de datos y pueda dar acceso o que lo niegue al usuario de entrar a su sistema, es bastante basica pero muy funcional.
Cabe destacar que hare el uso de Dataset por el hecho de que si ustedes quieren hacer un programa el cual se ejecute en varias maquinas (Cliente) no van a batallar, si lo hacen de manera distinta puede de que les salga un error en el cual te pida la ubicacion de la base de datos, usuario y todo lo relacionado cada ves que quieran iniciar sesion.

Bueno para empezar abrimos un nuevo proyecto de Windows Forms el cual debera contener 2 TextBoxs, 2 labels, 1 Boton de Aceptar y otro Winform dentro del mismo proyecto.

Una forma de windows la utilizaremos para la ventana del login y la otra como si fuera la ventana principal a donde queremos accesar.

Algo similares a esto:


 
Ok entonces ahora haremos en nuestra base de datos una tabla la cual contendra los nombres de usuarios y sus respectivos passwords, yo le puse tblLogin
 

Si se fijan yo solo puse 2 usuarios,igual pueden tener cuantos quieran o necesiten.
Bueno ya teniendo eso vamos a programar un pequeñito Stored Procedure el cual nos devolvera un numero 1 si existen registros al momento de buscar al usuario y password y un 0 si no encuentra nada que coincida, bueno para que no batallen les dejo el stored procedure tal y como lo ejecutaran en una consulta.

CREATE
procedure [dbo].[sp_Login]

@Usuariovarchar(15),

@Passwordvarchar(15)

AS

SELECT

count(*) FROM tblLogin WHERE

Usuario
= @Usuario AND Password = @Password


Me lo pone todo mal acomodado aqui pero en el SQL si ejecutara bien la consulta.
Bueno ya que tengamos lista nuestra tabla de datos con de perdida un usuario creado con contraseña y el SP procedemos a agregar un Dataset a nuestro proyecto.



Ahora lo que sigue hay que poner algo de enfasis, no es dificil pero si deben de checar bien, lo que vamos a agregar es nuestro origen de base de datos el cual dentro de nuestro objeto Dataset creado nos vamos a ir del lado izquierdo por lo general a la pestaña de Origenes de Datos y seleccionamos el icono de forma de base de datos con un cuadrito con una palomita en verde, es el tercero de izquierda a derecha y hara que salga una ventana Wizard para indicarles donde se encuentra nuestro origen de base de datos asi como lo muestro en la imagen:
 
 
Como ven se nos va a expandir las tablas de la base de datos que tenemos y seleccionamos en este caso la de tblLogin que es donde tenemos a nuestros usuarios.
 
NOTA: Si no les aparece la forma de la ventana anterior hay que darle clic al primer icono de la base de datos que aparece en primer lugar la que no tiene palomita, les va a salir un formulario pidiendoles los datos para el acceso a la base de datos, ya que los pongan este les creara un nuevo dataset en el cual tambien pueden poner lo que enseguida explicare no hay problema, asi ya tendran guardara la cadena de conexion para futuras conexiones.
 
 
Bueno ya teniendo guardada la conexion y configurada les arrastrara automaticamente al dataset la tabla que seleccionamos que en este caso fue la de tblLogin
 


Ok ahora ya que tenemos nuestro Dataset con la conexion hay que agregar al dataset el stored procedure que creamos de la siguiente manera:
 


 
Hay que darle click derecho en la parte que dice tblLoginTableAdapter y le damos clic en Agregar consulta y nos saldra un Wizar el cual debemos de seleccionar Usar el Procedimiento Almacenado Existente y le damos siguiente y nos pondremos sobre la siguiente ventana:




Si se fijan en el combobox que aparece le damos clic y nos aparecera el Stored Procedure que creamos y lo tenemos que seleccionar para que nos salga lo que les mostre en pantalla, entonces si todo va bien hasta ahi le vamos a dar clic en siguiente, nos saldran unas opciones en la siguiente ventana la cual hay que seleccionar la que dice Un Solo Valor: se generara una funcion con tipo que devuelve un solo valor.......
El stored procedure que creamos recuerden que nos devolvera un 1 o un 0 es por eso que necesita que este seleccionada esa opcion, ya despues de eso le damos Finalizar y listo hemos agregado nuestro Stored Procedure a la tabla de datos, asi como se muestra en la imagen:



Buenos ya que tenemos todo listo hasta ahi nos vamos al formulario de Login en donde validaremos los datos para el acceso y para esto hay que hacer lo siguiente:

En el evento onclic de nuestro boton de login hay que poner el siguiente codigo, se los dejo para que no batallen, es bastante facil de todos modos:


try

{ if (txtUsuario.Text == "" || txtPassword.Text == "") // ESTOS SON LOS TEXTBOXS DEL FORMUARIO CHECAMOS QUE NO ESTEN VACIOS
 MessageBox.Show("Favor de llenar todos los campos correspondientes");
 else

{
if (ta.sp_Login(txtUsuario.Text, txtPassword.Text).ToString() == "1") //ESTO LO EXPLICO MAS ADELANTE

{ frmPrincipal frm = new frmPrincipal(); //MUESTRA EL FORMULARIO PRINCIPAL A DONDE QUEREMOS ACCESAR
frm.Show();                    
}

else
MessageBox.Show("Acceso denegado al sistema, favor de verificar sus datos");

}

}

catch (Exception ex)

{ MessageBox.Show(ex.Message);
}

 
 Para esto antes del evento onclic en el codigo que les genera, es decir por fuera del bloque
hay que poner el siguiente codigo:

tblLoginTableAdapter

ta = new tblLoginTableAdapter();



Esto es para instanciar el adaptador que tenemos en nuestro dataset de donde jalaremos al Stored Procedure y para eso tambien la clase necesita el  
 
using

EjemploLogin.LoginDataSetTableAdapters;


 Que eso queda de mas de explicar, es solo agregar la linea hasta arriba y listo.

Bueno ya que tengamos listo todo eso compilamos el proyecto y tratamos de hacer el login y checamos si funciona bien.



Espero les haya servido de algo, cualquier duda o comentario es bien recibido.

Gracias.

Misael Ontiveros







3 comentarios: