我将用户名和密码存储在MySql数据库中。我正在使用以下代码来验证基于来自我的数据库的数据进行登录的凭据。代码工作正常。我的问题是这是否是不好的做法,是否有更好的方法来做到这一点。从数据库检查登录凭证
我的方法是连接到该数据库,提取并将这些信息存储在列表中,并将它们与来自文本框输入的用户输入进行比较。
//Extracting information from the database and storing it in a List
public void Login()
{
MySqlCommand cmdReader;
MySqlDataReader myReader;
userQuery = "SELECT * FROM User";
string name = "Name";
string user = "UserName";
string pw = "Password";
string connString = "server=" + server + "; userid=" + userid + "; password=" + password + "; database=" + database;
try
{
conn.ConnectionString = connString;
conn.Open();
cmdReader = new MySqlCommand(userQuery, conn);
myReader = cmdReader.ExecuteReader();
while (myReader.Read())
{
string tempUser, tempPassword;
if (name != null)
{
tempUser = myReader.GetString(user);
tempPassword = myReader.GetString(pw);
users.Add(tempUser);
passwords.Add(tempPassword);
}
}
myReader.Close();
}
catch (Exception err)
{
MessageBox.Show("Not connected to server. \nTry again later.");
Application.Current.Shutdown();
}
}
//Comparing the List data with the users input from textbox1 and textbox2 to verify
private void btn1_Click(object sender, RoutedEventArgs e)
{
for (int x = 0; x < users.Count; x++)
{
for (int y = 0; y < passwords.Count; y++)
{
if (users[x] == textbox1.Text && passwords[y] == textbox2.Text)
{
MessageBox.Show("Login successful");
}
}
}
}
该代码如何正常工作?用户没有与密码关联?你有他们在两个单独的集合。 – Paparazzi 2015-02-24 20:27:49
我有他们在2个独立的集合,但检查时,使用嵌套循环检查他们相同的时间相同的索引。经过测试,它的工作原理。 – kar 2015-02-24 20:38:03
你有两个列表上的嵌套循环,并比较索引?确定它的工作原理,但这远非最佳。 – Paparazzi 2015-02-24 20:41:42