使用访问数据库在c#中登录系统

时间:2012-12-24 18:00:28

标签: c# database ms-access

我正在尝试使用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();
    }

谢谢。

1 个答案:

答案 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所述,您不希望以纯文本格式存储密码。因此,您的应用程序需要进行相当多的调整,但重新获取数据将是一个开始。

下一步研究:

  • Microsoft Access中的预准备语句。
  • 密码哈希。