Я не могу проверить логин пользователей, так как, если я ввожу неправильные значения, мой datareader не выполняется y? - PullRequest
0 голосов
/ 01 января 2011

// код

private void glassButton1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox1.Text == "" || comboBox1.SelectedIndex == 0)
    {
        Message m = new Message();
        m.ShowDialog();
    }

    else
    {
        try
        {
            con.ConnectionString = "Data source=BLACK-PEARL;Initial Catalog=LIFELINE ;User id =sa; password=143";
            con.Open();
            SqlCommand cmd = new SqlCommand("Select LoginID,Password,Department from Login where LoginID=@loginID and Password=@Password and Department=@Department", con);
            cmd.Parameters.Add(new SqlParameter("@loginID", textBox1.Text));
            cmd.Parameters.Add(new SqlParameter("@Password", textBox2.Text));
            cmd.Parameters.Add(new SqlParameter("@Department", comboBox1.Text));
            SqlDataReader dr = cmd.ExecuteReader();
           if (dr.Read())
            {

                string Strname = dr[0].ToString();
               string StrPass = dr[1].ToString();
               string StrDept = dr[2].ToString();
               if(dr[2].ToString().Equals(comboBox1.Text)&&dr[0].ToString().Equals(textBox1.Text)&&dr[1].ToString().Equals(textBox2.Text))
                {
                    MessageBox.Show("Welcome");
                }
                else
                {
                    MessageBox.Show("Please Enter correct details");
                }
            }
           dr.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Exception" + ex);
        }
        finally
        {
            con.Close();
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Вы должны заменить && на AND в вашем SQL:

SELECT LoginID,Password,Department
FROM Login
WHERE LoginID=@loginID
AND Password=@Password 
AND Department=@Department
2 голосов
/ 01 января 2011

Когда нет подходящего пользователя, он вернет ноль строк. Вы должны проверить, есть ли у читателя какие-либо строки, если нет, то это означает, что данные для входа неверны. Просто включите еще одно с этим оператором if.

if (dr.Read())
{
.........
}
else
{
   MessageBox.Show("Please Enter correct details");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...