Противоречивые ошибки 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()
Другие вопросы по тегам