#c# #mysql #connector
#c# #mysql #соединитель
Вопрос:
Здравствуйте, у меня возникли проблемы с чтением MySqlDataReader
. Я пытался изменить while()
на if()
, и тогда это сработало. Итак, я делаю что-то не так с while (Reader.Read())
. Спасибо за ответ. (Другой вопрос сегодня исправлен, кто-то, кто прокомментировал, помог мне xd)
using (MySqlCommand cmd = new MySqlCommand
("SELECT * FROM `citationer`", mysqlCon))
{
try
{
MySqlDataReader Reader = cmd.ExecuteReader();
while (Reader.Read()) // this part is wrong somehow
{
citationstexter.Add(Reader.GetString(loopReading)); // this works
loopReading ; // this works
}
Reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Комментарии:
1. Не могли бы вы предоставить подробную информацию об исключении, пожалуйста. Мне кажется, все в порядке.
Ответ №1:
Ваша проблема заключается в использовании loopReading
параметра для GetString
. Этот параметр должен быть порядковым номером столбца на основе нуля (номер столбца), но вы увеличиваете его для каждой прочитанной строки.
Смотрите здесь для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getstring.aspx
Вы должны использовать 0 для первого столбца вашей таблицы citationer, 1 для второго столбца и т.д.
Кроме того, хорошей практикой является использование
using(MySqlDataReader Reader = cmd.ExecuteReader())
{
...
}
точно так же, как вы сделали для объекта MySqlCommand, чтобы предотвратить утечку памяти (но это не ваша проблема.)