根据用户名 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# 检查登录凭据和打开表单的主要内容,如果未能解决你的问题,请参考以下文章
登录表单用户凭据而不是 LDAP Spring Security 中的硬编码 UserDn 和密码