C# запись выбора из MySQL в переменную

У меня есть большая проблема с сохранением переменной из выбора в MySQL.

Я написал следующий код:

string connectionstring = @"****;userid=*****;
password=***;database=***";
cnn = new MySqlConnection(connectionstring);
cnn.Open();
MySqlDataReader reader = null;
string query_date = "SELECT computer_name from wp_users where user_login = @login";
MySqlCommand command2 = new MySqlCommand(query_date, cnn);
command2.Parameters.AddWithValue("@login", metroTextBox.Text);
reader = command2.ExecuteReader();
while (reader.Read())
{
   string ColumnName = (string)reader["computer_name"];
}
cnn.Close();

Я пробовал много команд, таких как ExecuteReader, ExecuteNonQuery, ExecuteScalar. но ни один из них не работал, и я получаю ту же ошибку: введите описание изображения здесь

На самом деле не знаю, что здесь не так, я много искал и не нашел решения ни в какой форме. Пожалуйста помоги.

РЕДАКТИРОВАТЬ 1

Я просто сделал, как вы написали, и я сделал это:

     string connectionstring = @"****;userid=*****;
        password=***;database=***";
        cnn = new MySqlConnection(connectionstring);
        cnn.Open();
        MySqlDataReader reader = null;
        string query_date = "SELECT computer_name from wp_users where user_login = @login";
        MySqlCommand command2 = new MySqlCommand(query_date, cnn);
        command2.Parameters.AddWithValue("@login", metroTextBox.Text);
        DataTable table = new DataTable("ResultTable");
            MySqlDataAdapter adapter = new MySqlDataAdapter(command2);
            adapter.Fill(table);

            // This is the important line
            string result = table.Rows[0].ToString();

            cnn.Close();

Это та же ошибка, что и раньше, но в другом месте. Что здесь происходит... просто не знаю. Дополнительная информация означает на английском языке: ключа нет в словаре введите описание изображения здесь

РЕДАКТИРОВАТЬ 2

Самое смешное, когда я просто пытаюсь обновить код:

 string connectionstring = @"****;userid=*****;
    password=***;database=***";
    cnn = new MySqlConnection(connectionstring);
    cnn.Open();
    MySqlDataReader reader = null;
    string upd = "UPDATE w_users Set computer_name = CURRENT_DATE where user_login =  @login";
    MySqlCommand command2 = new MySqlCommand(upd, cnn);
    command2.Parameters.AddWithValue("@login", metroTextBox.Text);
    DataTable table = new DataTable("ResultTable");
    SqlDataAdapter adapter = new MySqlDataAdapter(command2);
    adapter.Fill(table);
    cnn.Close();

И это прекрасно работает без каких-либо ошибок, просто обновите мою таблицу... Какой смысл в этом

РЕДАКТИРОВАТЬ 3

Я JUTR попытался использовать для ExecuteScalar(), и все же у меня та же ошибка: введите описание изображения здесь

3 ответа

Решение

Решение простое:

обновление mysql.data.dll в последней версии это исправлено ( https://dev.mysql.com/downloads/connector/net/6.9.html**).

Если у вас есть MySqlDataAdapter, попробуйте, если у вас работает следующий код:

string connectionstring = @"****;userid=*****;
password=***;database=***";
cnn = new MySqlConnection(connectionstring);
cnn.Open();

string query_date = "SELECT computer_name AS `computer_name` FROM wp_users WHERE user_login = @login";

MySqlCommand command2 = new MySqlCommand(query_date, cnn);
command2.Parameters.AddWithValue("@login", metroTextBox.Text);

DataTable table = new DataTable("ResultTable");
MySqlDataAdapter adapter = new MySqlDataAdapter(command2);
adapter.Fill(table);

// This is the important line
string result = table["computer_name"];

cnn.Close();

Это исключение хочет сообщить вам, что в вашем наборе результатов нет соответствующего ключа. Ключи чувствительны к регистру. Вы пытались записать имя своего столбца всеми заглавными буквами: (строка) читатель ["COMPUTER_NAME"]?

Базы данных обычно возвращают имена столбцов в верхнем регистре, даже если вы выбрали имя столбца в нижнем регистре.

Другие вопросы по тегам