因此,我尝试创建一个简单的按钮来确定您是管理员还是用户。
但是我无法使其正常工作。我已经连接到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/