C#登录消息警告

时间:2012-02-03 16:28:46

标签: database login

我在这里因为我有问题。我有一段时间前创建的代码。当用户输入正确的用户名和密码时,我的代码工作正常。所以我的问题是当用户插入错误的用户名和密码错误消息不会显示。这是我的代码:

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");
    }
}

任何人都可以告诉我这段代码有什么问题?

2 个答案:

答案 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