需要检查数据库中的值才能相应地打开表单

本文关键字:表单 检查 数据库 | 更新日期: 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 + "'";

一旦您从查询中检索到用户类型并在阅读器中执行,您就可以根据可用数据做出决定。例如,打开管理表单或最终用户表单等。