我試圖在C#中的列表中執行驗證檢查。該列表包含一個用戶名和哈希密碼。它看起來像:驗證檢查以查看列表中是否存在項目c#
Shaun,ewoaih3243nfeiwo
John, fewafwea231232
Alex, fhi34325325325
因此,例如肖恩是Username
和ewoaih3243nfeiwo
是password
。我正在讀取函數Read中的數據庫中的這個列表。
這裏是我的代碼:
private void LoginButton_Click(object sender, EventArgs e)
{
List<string> List = Read();
label3.Text = null;
textBox2.Text = null;
string Username = textBox1.Text;
string Password = textBox2.Text;
String hashPassword = passHash.HashPass(Password);
for (int i = 0; i < List.Count; i++)
{
if (List[i].Contains(Username))
{
if (List[i].Contains(hashPassword))
{
MessageBox.Show("Welcome, " + textBox1.Text + ". Logging in...", "Welcome");
Form.ActiveForm.Hide();
Main.FrontWindow Start = new Main.FrontWindow();
Start.ShowDialog();
}
else
{
label3.Text = "Username and password do not match.";
}
}
else
{
label3.Text = "User does not exist";
}
}
}
然而,當我填寫文本框和運行,我總是得到的結果是,用戶不存在,即使它很清楚呢。例如,當我輸入Shaun和一個不正確的密碼時,它應該說用戶名和密碼不匹配時,它說,而不是用戶不存在。
編輯:這裏是我如何創建字典
public Dictionary<string, string> Read()
{
string username;
string password;
string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\A2 Computing\C# Programming Project\Database1.accdb";
string SelectQuery = "SELECT Username, Password FROM users";
OleDbConnection Connection = new OleDbConnection(ConnectionString);
OleDbCommand Command = new OleDbCommand(SelectQuery, Connection);
Command.Connection.Open();
OleDbDataReader Reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
List<string> usernameList = new List<string>();
List<string> passwordList = new List<string>();
while (Reader.Read())
{
username = (string)Reader["Username"];
string usernameAdd = Convert.ToString(username);
usernameList.Add(usernameAdd);
password = (string)Reader["Password"];
string passwordAdd = Convert.ToString(password);
passwordList.Add(passwordAdd);
}
var userDictionary = usernameList.Zip(passwordList, (u, p) => new { u, p })
.ToDictionary(x => x.u, x => x.p);
var userList = userDictionary.ToList();
listBox1.DataSource = userList;
return userDictionary;
}
或許確保您通過文本框修整用戶輸入?任何空白字符都會導致它們不匹配。另外,我會轉儲Read()方法產生的任何內容,只是爲了快速進行完整性檢查,並確保在迭代列表時確保您獲得匹配。 – 2015-03-02 18:43:26
列表的內容是否具有已知格式?那就是你有一個例子,在名字和哈希密碼之間用逗號隔開,而另一個用逗號和空格隔開。 – juharr 2015-03-02 18:49:06