我正在Windows窗体中构建应用程序。我的问题是,如果执行下面代码中的“else”条件,它就不会显示消息框,因为代码会暗示。
else
MessageBox.Show(this, "invalid username password")
我做错了什么?
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=192.168.6.51,1433;Network Library=DBMSSOCN; Database=INTIME; User Id=********; password=********";
con.Open();
string str = "select * from Login_table where user_name='" + textBox1.Text + "' and password='" + textBox2.Text + "'";
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
string login = textBox1.Text;
string pwd = textBox2.Text;
while (dr.Read())
{
if ((dr["user_name"].ToString() == login) && (dr["password"].ToString() == pwd))
{
Form2 objform1 = new Form2();
objform1.Show();
this.Hide();
}
else
MessageBox.Show(this, "invalid username password");
}
dr.Close();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
其他部分无法访问 。您已将userName和password传递给存储过程,因此如果表中不存在具有该密码的用户名,则读者不会返回任何行。
此检查没有意义,因为 如果返回数据意味着此条件已经评估为真实 :
if ((dr["user_name"].ToString() == login) && (dr["password"].ToString() == pwd))
只有当没有从SP返回的行 时, 才会显示无效的用户名/密码:
while (dr.Read())
{
Form2 objform1 = new Form2();
objform1.Show();
this.Hide();
}
if(!dr.HasRows)
{
MessageBox.Show(this, "invalid username password");
}