因此,我尝试创建一个简单的按钮来确定您是管理员还是用户。

但是我无法使其正常工作。我已经连接到MySQL数据库,但是当我用任一管理员/用户帐户(存储在数据库中)单击按钮时,我得到:


  “您是管理员”


所以我想我在某个地方有错误,但是看不到哪里:

   private void button1_Click(object sender, EventArgs e)
    {
        MySqlConnection cn = new MySqlConnection("Server=;Database=;Uid=;Pwd=;");
        MySqlCommand cmd = new MySqlCommand("SELECT usertype FROM table1 ", cn);
        cmd.Parameters.AddWithValue("usertype", usertype.Text);
        cn.Open();
        string usertype123 = cmd.ExecuteScalar()?.ToString();


        if (usertype123 == "admin")
        {
            MessageBox.Show("you are an admin");
        }
        else
        {
            MessageBox.Show("You are an user ");
        }

        cn.Close();
    }

最佳答案

如果不向SQL命令中添加WHERE语句,则将始终从数据库引擎返回的第一行的第一列中检索值。您应该将代码更改为以下内容

private void button1_Click(object sender, EventArgs e)
{
    // I assume you have a field named UserID as the primary key of your table1
    string sqlCmd = @"SELECT usertype FROM table1 WHERE UserID=@id";
    using(MySqlConnection cn = new MySqlConnection("....."))
    using(MySqlCommand cmd = new MySqlCommand(sqlCmd, cn))
    {
         cmd.Parameters.Add("@id", MySqlDbType.Int32).Value = currentUserid;
         cn.Open();
         string usertype123 = cmd.ExecuteScalar()?.ToString();
         if (usertype123 == "admin")
         {
             MessageBox.Show("you are an admin");
         }
         else
         {
             MessageBox.Show("You are an user ");
         }
     }
}


现在的问题是如何定义变量currentUserId,这是您在用户登录时需要检索的内容,并在类级别进行保存以在需要时重用。还要注意,连接是一次性物品,因此需要在使用完毕后立即将其丢弃。 using语句有助于做到这一点

关于c# - C#MySQL查询到If语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55068414/

10-10 14:14
查看更多