Противоречивые ошибки MySqlReader
MySqlCommand command = connection.CreateCommand();
command.CommandText = string.Format("SELECT * FROM characters WHERE account_id = '{0}'", this.ID);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read()) { ... }
В последней строке я получаю сообщение об ошибке "Недопустимая попытка чтения, когда читатель закрыт". Теперь, если я добавлю еще одну строку перед ним, как в:
MySqlCommand command = connection.CreateCommand();
command.CommandText = string.Format("SELECT * FROM characters WHERE account_id = '{0}'", this.ID);
MySqlDataReader reader = command.ExecuteReader();
reader = command.ExecuteReader(); // Here.
while (reader.Read()) { ... }
В этой новой строке я получаю сообщение об ошибке: "С этим подключением уже связан открытый DataReader, который должен быть закрыт первым".
Хорошо, я не хочу быть разборчивым, но мой читатель открыт или закрыт?
2 ответа
Решение
Это может быть из-за ошибки в MySqlDataReader, которая была задокументирована здесь.
Также после этой строки:
MySqlDataReader reader = command.ExecuteReader();
используйте отладчик, чтобы найти значение следующего:
reader.IsClosed;
Это позволит лучше понять, открыт ли или нет читатель.
Это опечатка или вы пытаетесь читать с другого читателя, а не с того, который вы открыли?
MySqlDataReader reader = command.ExecuteReader();
а потом:
filler.Reader.Read()