C# 中的登录代码中的问题
本文关键字:问题 代码 登录 | 更新日期: 2023-09-27 18:33:09
我已经修改了我以前编写的代码,但仍然无法找到缺陷......我正在尝试使用DB的列名作为代码中的参数来检查登录。我提供的 If 语句似乎不起作用,因为代码始终显示登录失败,而参数能够在控制台上返回数据库记录。(如下面的链接所示)。然而,控件没有输入 if 语句...
这是代码:
private void button1_Click(object sender, EventArgs e)
{
String s1 = textBox1.Text;
String s2 = textBox2.Text;
SqlConnection cnn = new SqlConnection("Data Source=.''SQLEXPRESS;Initial Catalog=register;Integrated Security=True");
String sql = ("select Userid,Password from reg where Userid='" + s1 + "' and Password='" + s2 + "' ");
cnn.Open();
String userid="";
String password="";
SqlCommand cmd = new SqlCommand(sql,cnn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while(reader.Read())
{
userid = reader.GetString(0);
password = reader.GetString(1);
Console.WriteLine(userid);
Console.WriteLine(password);
}
if((s1.Equals(userid)) && (s2.Equals(password)))
{
MessageBox.Show("LOGIN SUCCESSFULLY DONE>>");
}
else
{
MessageBox.Show("LOGIN UNSUCCESSFUL ....");
}
}
[Database EntryOutput
您需要
在 WHERE
子句中使用 AND
而不是逗号:
String sql=("select userid,password from reg where Userid='"+s1+"' and Password='"+s2+"' ")
^^^
然后,您需要执行查询:
string userid, password;
using(var cmd = new SqlCommand(sql,cnn))
{
cnn.Open();
using (var reader = cmd.ExecuteReader())
{
reader.Read();
userid = reader.GetString(0);
password = reader.GetString(1);
}
}
然后,使用 if
语句中的值:
if ((s1.Equals(userid)) && (s2.Equals(password)))
我写的代码实际上没有任何缺陷。这里的问题是输入数据期间的运行时间。还考虑了尾随空格,因此无法成功匹配字符串。因此,为了解决这个问题,我使用了trim()函数。
这是我所做的更改 -
String s1 = textBox1.Text.Trim();
String s2 = textBox2.Text.Trim();
//And further in the while loop
userid = reader.GetString(0).Trim();
password = reader.GetString(1).Trim();