首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >管理员和用户登录C#

管理员和用户登录C#
EN

Stack Overflow用户
提问于 2018-06-10 02:25:05
回答 1查看 912关注 0票数 0

我使用的是Access db。我需要验证它的管理员或用户,因为我想为他们打开不同的表单。但我找不到一种方法。我使用复选框来注册该员工是否为管理员,如下所示:

代码语言:javascript
复制
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;

这很好用,但是在登录表单中没有区别,因为我不知道如何使用登录和密码验证复选框,所以是这样的。

代码语言:javascript
复制
         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();
         }
EN

回答 1

Stack Overflow用户

发布于 2018-06-10 02:35:07

代码语言:javascript
复制
if (dt.Rows.Count > 0)
{
    // you should have one row in the table. check for admin.
    if(dt.Rows[0]["Admin"] == true)
    {
         etc.

如注释所述,将参数添加到适配器的查询中。始终使用参数。如果有人试图入侵你的数据库,它们被用来“清理”用户输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档