【问题标题】:c# mysql query to If statementc# mysql查询到If语句
【发布时间】:2019-03-08 17:46:40
【问题描述】:

所以我正在尝试创建一个简单的按钮来决定您是管理员还是用户。

但我无法让它正常工作。我已连接到 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();
    } 

【问题讨论】:

  • 顺便说一句... 将连接字符串复制/粘贴到 Internet 站点时,您可能希望省略密码。
  • 您的表中有多少行。如果您没有在查询中添加 WHERE 语句,数据库将返回表中的每一行,并且您始终从第一行的第一列获取值(ExecuteScalar)
  • 哦,我没注意到密码。我有 3 行。

标签: c# mysql sql


【解决方案1】:

如果您不向 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 语句有助于做到这一点

【讨论】:

  • 谢谢!我创建了名为 currentUserid1 的类,但我不知道如何在其中存储 id 值。据我了解,用户凭据何时成功验证。我需要在该类中查询该用户 ID 和疼痛,以便下一个表单可以使用它。任何提示如何将其存储在该类中?
  • 这取决于您如何验证您的用户。可能您有另一段代码通过帐户和密码检索用户。这是您需要获取该ID的地方。我认为最好发布一个包含问题详细信息的新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2014-02-05
  • 2014-10-18
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多