管理员和用户登录C#

时间:2018-06-09 18:25:05

标签: c# sql ms-access

我正在使用Access db。我需要验证其管理员或用户是否因为我想为他们打开不同的表单。但我找不到办法做到这一点。我使用了一个复选框来注册员工是否是管理员:

private void button2_Click(object sender, EventArgs e)
    {
        string strincon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\flavi\Desktop\Pet&Shop.2\PetShop\TelaAbertura\bin\Debug\DatabasePS.mdb;Persist Security Info=True";

        string comando = "INSERT INTO Funcionario (Nome,  Login, Senha, Email, Cargo, Admin) Values (@Nome, @Login, @Senha, @Email, @Cargo, @Admin) ";
        OleDbConnection con = new OleDbConnection(strincon);
        OleDbCommand com = new OleDbCommand(comando, con);

        com.Parameters.Add("@Nome", OleDbType.VarChar).Value = txtNome.Text;
        com.Parameters.Add("@Login", OleDbType.VarChar).Value = txtLogin.Text;
        com.Parameters.Add("@Senha", OleDbType.VarChar).Value = txtSenha.Text;
        com.Parameters.Add("@Email", OleDbType.VarChar).Value = txtEmail.Text;
        com.Parameters.Add("@Cargo", OleDbType.VarChar).Value = txtCargo.Text;
        com.Parameters.Add("@Admin", OleDbType.Boolean).Value = checkBox1.Checked;

这工作正常,但在登录表单中没有区别,因为我不知道如何使用登录名和密码验证复选框,所以就像这样。

         OleDbDataAdapter da;
         DataTable dt = new DataTable();
         da = new OleDbDataAdapter("Select  * from Funcionario where Login='" + txtLogin.Text + "'and Senha= '" + txtSenha.Text + "'", con);  //Senha = Password
         da.Fill(dt);
         if (dt.Rows.Count > 0)
         {
             FrmPrincipal frm = new FrmPrincipal();
             frm.Show();
             this.Visible = false;
         }
         else
         {
             MessageBox.Show("Login ou Senha Inválidos", "Ocorreu um Erro de Autenticação", MessageBoxButtons.OK, MessageBoxIcon.Error);
             txtLogin.Clear();
             txtSenha.Clear();
         }

1 个答案:

答案 0 :(得分:0)

if (dt.Rows.Count > 0)
{
    // you should have one row in the table. check for admin.
    if(dt.Rows[0]["Admin"] == true)
    {
         etc.

如评论中所述,将参数添加到适配器的查询中。 始终使用参数。如果有人试图破解您的数据库,它们将用于“清理”用户输入。