我在这里因为我有问题。我有一段时间前创建的代码。当用户输入正确的用户名和密码时,我的代码工作正常。所以我的问题是当用户插入错误的用户名和密码错误消息不会显示。这是我的代码:
MyDs.Clear();
MyDa.SelectCommand = Conn.CreateCommand();
MyDa.SelectCommand.CommandText =
"select * from PersonalName where Firstname=@first and Lastname=@last";
MyDa.SelectCommand.CommandType = CommandType.Text;
MyDa.SelectCommand.Parameters.Add("@first", DbType.String, 25, "Firstname").Value = textbox_Username.Text;
MyDa.SelectCommand.Parameters.Add("@last", DbType.String, 25, "Lastname").Value = textbox_Password.Text;
MyDa.Fill(MyDs);
foreach (DataRow item in MyDs.Tables[0].Rows)
{
if (textbox_Username.Text != item[1].ToString() || textbox_Password.Text != item[3].ToString())
{
MessageBox.Show("not connected");
}
else
{
MessageBox.Show("Connected");
}
}
任何人都可以告诉我这段代码有什么问题?
答案 0 :(得分:0)
如果查询没有返回记录,因为firast和姓氏不存在,foreach不会执行任何事情......
您还需要测试myDa是否为空,您的代码仅适用于检查有效用户。
答案 1 :(得分:0)
如果用户输入错误的用户名,您的数据集将为空。这将更接近你想要的:
if (MyDs.Tables[0].Rows.Count > 0)
{
// you don't need to check username, the SQL query took care of that
if (textbox_Password.Text == item[3].ToString())
MessageBox.Show("Connected.");
else
MessageBox.Show("Failed."); // wrong password
}
else
MessageBox.Show("Failed."); // no such user