Você está na página 1de 4

PRACTICA DE C SHARP

COMPROBAR USUARIO Y CONTRASEA CONECTNDOSE A UNA BASE DE DATOS


SQL SERVER
Crear la base de datos acceso que contiene la tabla usuario que est formada por los siguientes
campos:
nombre varchar (50) not null
clave varchar(40) not null
Disear el siguiente formulario:

El textBox1 tendr como propiedad Name txtUsuario


El textBox2 tendr como propiedad Name txtClave
Escribir el siguiente cdigo:
using System.Data.SqlClient;
private int veces = 0;
const int NumeroIntentos = 3;
Botn Aceptar
private void btnAceptar_Click(object sender, System.EventArgs e)
{
if( comprobarUsuario(this.txtUsuario.Text, this.txtClave.Text) )
{
this.DialogResult = DialogResult.OK;
this.Hide();//Form1
Form2 w = new Form2();
w.ShowDialog();
this.Show();//Form1
}
else
{
// Permitir varios intentos
veces = veces + 1;

if( veces < NumeroIntentos )


{
label1.Text = "Quedan " + (NumeroIntentos - veces) + " intentos";
return;
}
this.DialogResult = DialogResult.No;
}
Hide();
}
Funcion comprobarUsuario
private bool comprobarUsuario(string nombre, string clave)
{
// Conectar a la base de datos
SqlConnection cnn = null;
//
try
{
// Conectar a la base de datos de SQL Server
// (la cadena debe estar inicializada previamente)
cnn = new SqlConnection("Data Source=(local);Initial Catalog=Acceso;Integrated
Security=SSPI");
cnn.Open();
// Definir la cadena que vamos a usar para comprobar
// si el usuario y el password son correctos.
// Utilizo parmetros para evitar inyeccin de cdigo.
System.Text.StringBuilder sel = new System.Text.StringBuilder();
// Usando COUNT(*) nos devuelve el total que coincide
// con lo indicado en el WHERE,
// por tanto, si la clave y el usuario son correctos,
// devolver 1, sino, devolver 0
sel.Append("SELECT COUNT(*) FROM Usuario ");
sel.Append("WHERE Nombre = @Nombre AND Clave = @Clave");
// Definir el comando que vamos a ejecutar
SqlCommand cmd = new SqlCommand(sel.ToString(), cnn);
// Creamos los parmetros
cmd.Parameters.Add("@Nombre", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@Clave", SqlDbType.NVarChar, 40);
/// Asignamos los valores recibidos como parmetro
cmd.Parameters["@Nombre"].Value = nombre;
cmd.Parameters["@Clave"].Value = clave;
//
// Ejecutamos la consulta
// ExecuteScalar devuelve la primera columna de la primera fila
// por tanto, devolver el nmero de coincidencias halladas,
// que si es 1, quiere decir que el usuario y el password son correctos.
int t = Convert.ToInt32(cmd.ExecuteScalar());
// Cerramos la conexin
cnn.Close();
//
// Si el valor devuelto es cero
// es que no es correcto.

if( t == 0 )
{
return false;
}
}
catch(Exception ex)
{
MessageBox.Show("ERROR al conectar a la base de datos: \n" + ex.Message, "Comprobar
usuario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
return false;
}
finally
{
if( cnn != null )
{
cnn.Dispose();
}
}
//
// Si llega aqu es que todo ha ido bien
return true;
}

create table usuario(


nombre varchar(50) not null,
clave varchar(50)not null)
alter table usuario
add constraint pk_usuario
primary key(nombre,clave)

Você também pode gostar