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"]?
Базы данных обычно возвращают имена столбцов в верхнем регистре, даже если вы выбрали имя столбца в нижнем регистре.