Inicio de sesión y contraseña con C#

ahlam1 Mensajes publicados 33 Estado Miembro -  
 karima -
Buenas noches,
soy principiante en C#
quiero un código que me permita verificar si la palabra de pase y el login que el usuario ha introducido se encuentran en mi tabla (estoy trabajando con Access)
he escrito este código en el botón de conectar pero no funciona:
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;..........
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "SELECT COUNT(login) FROM utilisateur WHERE login= ' " + textBox1.Text + "' AND motdepasse= '" + textBox2.Text + "'";
cmd.Connection = con;
Int32 cin = (Int32)cmd.ExecuteScalar();
if (cin<0)
{
MessageBox.Show("attention :Le mot de passe ou le login est incorrecte");
}
else {
MessageBox.Show("vous êtes connecter");
choixDeService cds = new choixDeService();
cds.Show();

}
con.Close();

si quelqu’un peut me donner le code ou me corriger celui la je serai très reconnaissante
merci d’avance
Configuration: Windows 7 / Firefox 3.5.8

9 respuestas

  1. holow1 Mensajes publicados 739 Estado Miembro 71
     
    hola,

    hay una pequeña error creo aquí: if (cin<0) hay que poner if ( cin =< 0) o if (cin==0)

    porque cmd.ExecuteScalar(); nos devuelve 0 sí hay registros es el número de registros sí hay realmente registros así que tu caso devolverá 1 porque hay un único registro que corresponde a tu criterio

    por otro lado no he entendido el papel de esta parte del código ¿podrías explicárnoslo?

    choixDeService cds = new choixDeService();
    cds.Show();


    Publicidad eliminada Moderación CCM
    2
  2. ahlam1 Mensajes publicados 33 Estado Miembro 2
     
    buenas noches,
    gracias por su respuesta
    pero probé con ( cin <= 0) y (cin==0) pero no funciona
    si tienes otra idea o otra solución ........

    para
    choixDeService cds = new choixDeService();
    cds.Show();
    choixDeService es una forma
    quería decir si la contraseña y el login son correctos entonces abrir esa forma

    muchas gracias
    1
  3. holow1 Mensajes publicados 739 Estado Miembro 71
     
    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = "SELECT COUNT(*) FROM utilisateur WHERE login= '" + textBox1.Text + "' AND motdepasse= '" + textBox2.Text + "'";
    cmd.Connection = con;
    con.Open();
    Int32 cin = (Int32)cmd.ExecuteScalar();
    if (cin==0)
    {
    MessageBox.Show("vous êtes connecter");
    choixDeService cds = new choixDeService();
    cds.Show();

    }
    else {
    MessageBox.Show("attention :Le mot de passe ou le login est incorrecte");
    }
    con.Close();
    0
  4. ahlam1 Mensajes publicados 33 Estado Miembro 2
     
    no funcionó
    lo que dices permite que el usuario se conecte incluso si el nombre de usuario o la contraseña son incorrectos
    0
  5. holow1 Mensajes publicados 739 Estado Miembro 71
     
    hola,

    cmd.ExecuteScalar() : devuelve 0 si no hay registros y el número en el caso contrario, ¿es así?

    en su caso: devolverá 1 si la contraseña y el login son correctos y 0 en el caso contrario ?

    por lo tanto :

    if (cin!=0) 
    {
    MessageBox.Show("usted está conectado");
    choixDeService cds = new choisDeService();
    cds.Show();

    }
    else {
    MessageBox.Show("cuidado: la contraseña o el login son incorrectos");
    }
    con.Close();


    ¿hay errores en su base de datos?

    Publicidad eliminada Moderación CCM
    0
  6. ahlam1 Mensajes publicados 33 Estado Miembro 2
     
    sí, claro que existen ERG en la BD
    intento, pero ejecuta el else incluso si escribo el login y la contraseña correctos

    si tienes alguna otra idea, sería formidable
    0
  7. holow1 Mensajes publicados 739 Estado Miembro 71
     
    Hola;

    intenta con un sqldatareader

    SqlDataReader dr = default(SqlDataReader);
    int r = 0;

    cmd = new SqlCommand("select count(*) from pl where login = '" + TextBox1.Text + "' and passe = '" + TextBox2.Text + "'", cnx);
    cnx.Open();
    dr = cmd.ExecuteReader;
    dr.Read();
    r = dr(0);
    dr.Close();
    cnx.Close();

    if (r != 0)
    {
    MessageBox.Show("vous êtes connecter");
    }
    else {

    MessageBox.Show("attention :Le mot de passe ou le login est incorrecte");
    }
    }
    0
  8. ahlam1 Mensajes publicados 33 Estado Miembro 2
     
    (mientras trabajo con Access y no con SQL Server, cambiaré su programa para las datos aceptados por Access como SqlDataReader mediante OleDbDataReader) pero
    dr es una variable, no es un método; no podemos usar dr(0)
    no lo acepta
    0
  9. karima
     
    OleDbDataAdapter da = new OleDbDataAdapter("select * from Users where Login='" + tlogin.Text + "' and Password='" + tpassword.Text + "'", Program.con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    if (ds.Tables[0].Rows.Count != 0)
    {
    MessageBox.Show("Bienvenu ", "Bienvenue", MessageBoxButtons.OK, MessageBoxIcon.Information);
    GPDR09 f = new GPDR09();
    f.Show();
    this.Hide();

    }
    else
    MessageBox.Show("Votre Nom ou Password est incorect");
    tlogin.Clear();
    tpassword.Clear();
    0