Чтение с помощью MySqlDataReader

#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, чтобы предотвратить утечку памяти (но это не ваша проблема.)