2012-02-03 16 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"); 
    } 
} 

このコードの問題は誰にでも分かりますか?あなたはmyDaが同様に空であることをテストする必要が

答えて

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

+0

今この回答を「受け入れる」と私たちはどちらも満足しています:) – egrunin

0

クエリがfirastと姓becasueレコードが存在しないん、foreachのは、何も起こりません実行していない返す場合...

、あなたのコードだけのために働きます有効なユーザーを確認します。

+0

論理をありがとうございます。私はブレークポイントを試しました、プログラムを誤って読むと、間違っている情報が間違っているかどうかチェックしませんでしたが、正しいかどうかチェックしました。 – Sephiroth111