miércoles, 21 de septiembre de 2011

Hacer un Login usando Base de datos SQL en C#


Un pequeño ejemplo de como crear un login utilizando una base de datos.



Desarrollo:

Necesitamos crear dos formularios el primero llamado Login, el segundo Principal que será al que queremos acceder si la contraseña es correcta.

Para el login necesitamos crear el formulario tal como se muestra en la imagen principal:

 

Teniendo siempre en cuanta que se debe de cambiar la propiedad name a cada uno de los controles, para poder tener mayor control sobre el
formulario cuando se esta programando. En forma de validación he dejado la propiedad Eenable del botón iniciar en False esto servirá para no ejecutar el codigo que se encuentra en el sin antes tener llenos los textbox, de lo contrario dara un error.
Para el formulario Principal:

 


Este formulario no tiene ninguna función especial nada mas sirve para poder verificar que el login se ha hecho correctamente. En el caso de crear un sistema este podría ser el menú principal un formulario MDI por ejemplo. Pero basta con este para hacer la demostración.



CODIFICACIÓN

Crear la base de datos, la tabla con sus campos y llenando con un registro por lo menos. Al descargar el proyecto trae el scrip de la base de datos. Se puede ejecutar y listo(Por defecto el usuario es fernando y la contraseña es pepito). NOTA en el código esta la conexión a la base de datos ese código es suficiente para que pueda funcionar en cualquier computadora.


Formulario Login:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;//necesario para poder acceder a SQL

namespace Login
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnIniciar_Click(object sender, EventArgs e)
{
try
{
//creando la conexion
SqlConnection miConecion = new SqlConnection(@"server=.\SQLEXPRESS; Initial Catalog = loginbd; Integrated Security=True;");
//abriendo conexion
miConecion.Open();

SqlCommand comando = new SqlCommand("select usuario, contraseña from Tblusuario where usuario = '" + txtusuario.Text + "'And contraseña = '" + txcontraseña.Text + "' ", miConecion);

//ejecuta una instruccion de sql devolviendo el numero de las filas afectadas
comando.ExecuteNonQuery();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(comando);

//Llenando el dataAdapter
da.Fill(ds, "Tblusuario");
//utilizado para representar una fila de la tabla q necesitas en este caso usuario
DataRow DR;
DR = ds.Tables["Tblusuario"].Rows[0];

//evaluando que la contraseña y usuario sean correctos
if ((txtusuario.Text == DR["usuario"].ToString()) || (txcontraseña.Text == DR["contraseña"].ToString()))
{
//instanciando el formulario principal
Principal frmPrincipal = new Principal();
frmPrincipal.Show();//abriendo el formulario principal
this.Hide();//esto sirve para ocultar el formulario de login
}

}
catch
{
//en caso que la contraseña sea erronea mostrara un mensaje
//dentro de los parentesis va: "Mensaje a mostrar","Titulo de la ventana",botones a mostrar en ste caso OK, icono a mostrar en este caso uno de error
MessageBox.Show("Error! Su contraseña y/o usuario son invalidos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}

private void btnCancelar_Click(object sender, EventArgs e)
{
//Salir de la aplicacion
Application.Exit();
}

private void txtusuario_TextChanged(object sender, EventArgs e)
{
//aca se activa el boton INICIAR
btnIniciar.Enabled = true;
}
}
}



Para el Formulario principal en el botón salir nada mas:

Application.Exit();
Descargar el proyecto completo

24 comentarios:

yo dijo...

hola

g dijo...

asdasdas

g dijo...

asdjkh

queteimporta dijo...

muchas gracias lo andava buscando

=) dijo...

en este caso cuales serian los nombres de usuario y contraseña correctos para entrar y como se podrian agregar mas nombres de usuario y contraseñas

ana karen dijo...

muchas gracias. me sirvió un buen :D

seba dijo...

Una consulta, cuando estoy en el menu principal y apreteo la x para cerrar, el programa sigue funcionando, porque el login no se cierra. como puedo solucionar eso?

anonimo dijo...

y si lo quiero usar pero con una base de datos en Access 2010?

Jrafael dijo...

seba: en el evento closing del formulario principal pones Application.Exit(); y te cerrara todos los formularios que esten activos.

panchifio dijo...

wenaa perrin

juan carlos maza dijo...

cual es el usuario y contraseña

Juan dijo...

Excelente, gracias por el aporte me sirvio mucho. :)

Anonymous dijo...

esa basura no sirve, como vas a enseñar tremenda estupidez!!! , y si te inyecto con sql ??? tu aplicacion no vale por ke dejas de lado la segurida

daniel dijo...

gracias amigo me acabas de salvar

Anonymmous2 dijo...

Amigo ayúdanos con un buen acceso a datos en donde se tome en cuenta la seguridad y el manejo de errores ademas de las excepciones que se maneja por ejemplo al momento de insertar fechas en un sistema grande son muy necesarias verificar todos estos parámetros

Gracias....

Anonymmous2 dijo...

Lo que se esta explicando arriba cualquiera lo puede hacer

gfsgsgd dijo...

pueen hacer este codigo en c++

Gersain Castañeda dijo...

notaste que el password no distingue entre mayusculas y minusculas?

matiasp dijo...

te recomiendo que analices el try que arroja el error de logeo, ya que si se produce un error en el form invocado luego del login, arrojara dicho error, sin tener nada que ver el usuario y el pass, saludos!

Leo dijo...

excelente

Chilis dijo...

Lo probare a ver que tal XD

Estudiante de la UTHH dijo...

OLA KE ASE

Anónimo dijo...

brother la verdad no sé que pasa, pero he copiado el código para iniciar la seción y pues he cambiado algunas cosas de acuerdo a mi proyecto, y pues lo que sucede es que no me funciona como debería ser. Dice que hay error en los datos, y pues ya verifiqué lo tengo en mi Base de datos de sql server y pues es lo mismo, no sé xq me sale el error.

Unknown dijo...

muy bueno hermano pero tienes un error cuando los datos son validos no carga la segunda forma