2012-12-24 63 views
1

我想在c#中使用访问数据库创建登录系统。 我有一个数据库,和User_ID和密码列,我不知道为什么它不工作,你能帮我一下你的意见吗? 问题是程序仅检查第一个用户,但是当输入第三或第四个用户时,它显示消息:即使user_ID和密码正确,您的用户名或密码也不正确。 这里是代码:在访问数据库的c#中登录系统

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

不要以纯文本形式存储密码。 – SLaks

回答

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

  • 准备语句。
  • 密码哈希。
+0

我明白你告诉我的,但我不知道该怎么做,因为我是新手。我的问题是,我的编程教授根本不知道任何事情,他给了我一个项目,使用ms访问数据库的ebay之类的东西,因为我们没有学习SQL,我只是在冲浪互联网,试图找到一些解决方案和90%的时间在编码,我正在修复代码。如果我要求他帮助我,他说我不能,你自己做。 (他不知道对方)对垃圾邮件抱歉。感谢您的帮助。 –

+1

@VlasicVilaPanda,就像我所说的那样,修改您先得到的查询并获取数据。这是第一步。然后开始Google搜索。 –