Логин администратора и пользователя C # - PullRequest
0 голосов
/ 09 июня 2018

Я использую 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 голосов
/ 09 июня 2018
if (dt.Rows.Count > 0)
{
    // you should have one row in the table. check for admin.
    if(dt.Rows[0]["Admin"] == true)
    {
         etc.

Как указано в комментариях, добавьте параметры в запрос вашего адаптера. Всегда используйте параметры.Они используются для «очистки» пользовательского ввода, если кто-то пытается взломать вашу базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...