需要检查数据库中的值才能相应地打开表单
本文关键字:表单 检查 数据库 | 更新日期: 2023-09-27 18:21:44
我有点业余,是数据库和查询的初学者。我想做的是,我有一个包含用户名和密码的表,以及一个usertype列。在检查用户名和密码后,我想检查用户类型中的值,看看它是否为1,如果用户类型为2,程序将以管理员权限打开表单,然后我想在没有管理员权限的情况下打开表单。我不知道如何传递一个比较用户类型值的查询
private void button3_Click(object sender, EventArgs e)
{
string cs = "provider = microsoft.ace.oledb.12.0; Data Source=C:''Users''Obm''Desktop''Emp.accdb; ";
OleDbConnection conn = new OleDbConnection(cs);
conn.Open();
string q1 = "select username,password from MyUser where username = '" + textBox1.Text + "'and password = '" + textBox2.Text + "'";
OleDbCommand cmd = new OleDbCommand(q1, conn);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.Read() )
{
MessageBox.Show("Success");
//After this I want to check the value in usertype column.
}
else
{
MessageBox.Show("Try Again");
}
}
您需要在查询中选择usertype
列,然后才能从读取器中读取值。假设usertype
是字符串:
private void button3_Click(object sender, EventArgs e)
{
string cs = "provider = microsoft.ace.oledb.12.0; Data Source=C:''Users''Obm''Desktop''Emp.accdb; ";
OleDbConnection conn = new OleDbConnection(cs);
conn.Open();
string q1 = "select username,password,usertype from MyUser where username = '" + textBox1.Text + "'and password = '" + textBox2.Text + "'";
OleDbCommand cmd = new OleDbCommand(q1, conn);
OleDbDataReader reader = cmd.ExecuteReader();
while(reader.Read() )
{
MessageBox.Show("Success");
string usertype = reader.GetString(2);
//do something with usertype, eg if(usertype == "admin")...
}
reader.Close();
conn.Close();
}
您没有从数据库中获取用户类型。即
string q1 = "select username,password from MyUser where username = '" + textBox1.Text + "'and password = '" + textBox2.Text + "'";
您的查询需要看起来像是如果usertype是列,该列在MyUser表中可用作数据库中表usertype的外键
string q1 = "Select username, password, usertype from MyUser where username = '" + textBox1.Text + "'and password = '" + textBox2.Text + "'";
一旦您从查询中检索到用户类型并在阅读器中执行,您就可以根据可用数据做出决定。例如,打开管理表单或最终用户表单等。