2012-02-03 130 views
0

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

MyDs.Clear(); 
MyDa.SelectCommand = Conn.CreateCommand(); 
MyDa.SelectCommand.CommandText = 
    "select * from PersonalName where [email protected] and [email protected]"; 
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

如果输入错误的用户名,您的数据集将会是空的。这将更接近你想要的:

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 
+0

感谢您的帮助。问题解决了。 :) – Sephiroth111 2012-02-04 04:48:50

+0

现在“接受”这个答案,我们都会很高兴:) – egrunin 2012-02-04 07:47:15

0

如果查询返回任何记录becasue firast和姓氏不存在,的foreach不执行什么也没有发生......

你需要测试myDa是空的,以及,你的代码仅适用于检查有效的用户。

+0

谢谢你的逻辑。我尝试了断点,当我执行程序时,错误的信息没有检查它是否错误,但是检查它是否正确。 – Sephiroth111 2012-02-04 04:56:59