c # mysql запрос к оператору If - PullRequest
0 голосов
/ 08 марта 2019

Поэтому я пытаюсь создать простую кнопку, которая решает, являетесь ли вы администратором или пользователем.

Но я не могу заставить его работать должным образом. Я подключен к базе данных 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();
    } 

1 Ответ

1 голос
/ 08 марта 2019

Если вы не добавите оператор WHERE в свою команду sql, вы всегда будете получать значение из первого столбца первой строки, возвращенной механизмом базы данных.Вы должны изменить свой код на что-то вроде этого

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 Это то, что вам нужно извлечь, когда пользователь входит в систему и сохраняет вуровень класса для повторного использования при необходимости.Также обратите внимание, что соединения являются одноразовыми предметами, и поэтому вам необходимо утилизировать их, как только вы закончили их использовать.Использование оператора помогает сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...