根据用户名 C# 检查登录凭据和打开表单

Posted

技术标签:

【中文标题】根据用户名 C# 检查登录凭据和打开表单【英文标题】:check login credentials and open form based on username C# 【发布时间】:2017-02-22 19:23:11 【问题描述】:

我在用户登录时使用此代码验证登录信息,这不是最多三个用户早班,晚班和经理。

我是根据用户名打开不同的表单。我的意思是:

MorningShift 打开 frmCashier EveningShift 打开frmCashier3 Manager 打开frmAdmin

我该怎么做?

在组合框中选择用户名,然后输入密码。

private void button1_Click_1(object sender, EventArgs e)

    string cmdText = "select Count(*) from Staff where Sname=@p1 and Spass=@p2";
    using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data source=|DataDirectory|\\crepeDB.accdb;"))
    using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(cmdText, conn))
    
        conn.Open();
        cmd.Parameters.AddWithValue("@p1", comboBox1.Text);
        cmd.Parameters.AddWithValue("@p2", textBox1.Text);  // Is this a variable or a textbox?
        int result = (int)cmd.ExecuteScalar();
        if (result > 0)
        
            this.Hide();
            var form1 = new frmCashier();
            form1.Closed += (s, args) => this.Close();
            form1.Show();
        
        else
            MessageBox.Show("...");
    

【问题讨论】:

数据库中的staff表是否包含Shift列? 嗯,不,它只包含SName,SPass下的这三个记录(早班,1234 - 夜班,5555 - 经理,9999) 【参考方案1】:

类似下面的东西应该可以工作:

Form form1;
if (result > 0)

    this.Hide();
    if (comboBox1.Text.ToLower() == "MorningShift") 
        form1 = new frmCashier();
    
    else if (comboBox1.Text.ToLower() == "EveningShift") 
        form1 = new frmCashier3();
    
    else if (comboBox1.Text.ToLower() == "Manager") 
        form1 = new frmAdmin();
    
    else 
        throw new Exception("unknown user");
    
    form1.Closed += (s, args) => this.Close();
    form1.Show();

【讨论】:

以上是关于根据用户名 C# 检查登录凭据和打开表单的主要内容,如果未能解决你的问题,请参考以下文章

单击登录后如何重定向到下一页并检查用户凭据是不是正确

根据 MS Access 中的用户过滤子表单

如何设计一个 RESTful API 来检查用户的凭据?

登录表单用户凭据而不是 LDAP Spring Security 中的硬编码 UserDn 和密码

在 c# 中使用 Pgina 修改 Windows 登录 UI(凭据提供程序)

Visual C# - 根据用户角色将用户重定向到不同的窗体