我检查数据库登录详细信息的方法似乎没有返回任何内容。我不知道它是如何有毛病的。这是代码:
connection.Open();
if (chkRemember.Checked == true)
{
loginDetails();
}
string command = @"SELECT email, password FROM zc_users WHERE email = '@user';";
try
{
// COMMAND DETAILS
MySqlCommand email = new MySqlCommand(command, connection);
// PARAMETERS
email.Parameters.AddWithValue("@user", txtEmail.Text);
// READER DETAILS
MySqlDataReader dr;
// CHECK DETAILS
dr = email.ExecuteReader();
if (dr.Read())
{
string passwordC = dr.GetString(1);
string saltedPass = Security.HashSalt.CreateHash(txtPassword.Text, passwordC);
bool match = IsPasswordMatch(passwordC, saltedPass);
if (match == true)
{
connection.Close();
string email2 = txtEmail.Text;
frmZilent frm = new frmZilent(email2);
frm.Show();
this.Hide();
}
else
{
msgEx m = new msgEx();
m.Show();
connection.Close();
}
}
connection.Close();
}
catch (MySqlException ex)
{
MessageBox.Show("Zilent Error: Code ZCx001. Please report this to the Zilent Team. Thanks. " + ex.Message);
connection.Close();
}
}
基本上,从数据库中选择电子邮件和密码,然后使用数据库中的密码对txtPassword
文本框中的密码进行哈希处理。该方法检查它们是否相同,如果是,则关闭连接并显示下一个表单。
我得到错误或没有任何反应。有什么想法吗?
答案 0 :(得分:0)
您的SQL在字符串文字中包含参数,因此该参数被解释为字符串文字,因此不会使用该值
你有:
SELECT email, password FROM zc_users WHERE email = '@user';
更改为:
SELECT email, password FROM zc_users WHERE email = @user;
请注意,第二个版本中缺少撇号。