我正在尝试使用c#中的access数据库创建登录系统。 我有一个数据库,User_ID和密码列,我不知道为什么它不起作用,你能帮我看看吗? 问题是程序只检查第一个用户,但是当我输入第三个或第四个用户时,它会显示消息:即使user_ID和密码正确,您的用户名或密码也是错误的。 这是代码:
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection connect = new OleDbConnection();
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Hodzic\Desktop\projekat shipping\Database files\Users.accdb";
connect.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "select User_ID, Password from user_details";
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
if (textBox1.Text == reader[0].ToString() && textBox2.Text == reader[1].ToString())
{
this.Hide();
Glavna2 g1 = new Glavna2();
g1.Show();
break;
}
else
{
MessageBox.Show("Your user ID or password is incorrect.");
this.Hide();
Sign_in g2 = new Sign_in();
g2.Show();
break;
}
}
connect.Close();
}
谢谢。
答案 0 :(得分:1)
您需要在此处添加WHERE子句:
command.CommandText = "select User_ID, Password from user_details";
目前你只是检查读者的第一个结果,所以如果你要这样做(这很好),你需要一个WHERE子句。
类似的东西:
command.CommandText = "select User_ID, Password from user_details WHERE User_ID = 'myusername'";
显然,你需要连接它,并且许多人会争辩你需要担心SQL注入(因此这意味着准备好的语句),但让我们从那里开始然后我们可以继续前进。
此外,正如SLaks所述,您不希望以纯文本格式存储密码。因此,您的应用程序需要进行相当多的调整,但重新获取数据将是一个开始。
下一步研究: