Неправильная попытка чтения, когда читатель закрыт - PullRequest
0 голосов
/ 01 апреля 2011

Я работаю над C # и MySql запросом.Я пытаюсь получить свои данные в моей базе данных, но у меня есть это сообщение об ошибке: Недопустимая попытка чтения, когда читатель закрыт.

Спасибо за вашу помощь, ребята:)

У меня есть эта функция:

public MySqlDataReader GetValueFromTable(string table, ArrayList attribut, ArrayList parameter)
{
   string query = string.Empty;
   MySqlDataReader rdr = null;      
   try
   {
      query = "SELECT * FROM `" + table + "` WHERE ";
      for (int i = 0; i < attribut.Count; i++)
      {
         query += attribut[i] as string;
         query += " = ";
         query += parameter[i] as string;

         if(i != attribut.Count - 1) 
            query += " AND ";
      }

      query += ";";

      using (mysqlConnection)
      {
          using (mysqlCommand = new MySqlCommand(query, mysqlConnection))
          {                  
             rdr = mysqlCommand.ExecuteReader();
          }   
      }
   }
   catch (Exception ex)
   {
      Debug.Log(ex.ToString());
   }
   finally {}

   return rdr;
}

И затем где-то в моем коде я делаю это:

ArrayList attribut = new ArrayList();       
ArrayList parameter = new ArrayList();

attribut.Add("usern_id"); 
parameter.Add("1");     
MySqlDataReader reader = dataBase.GetValueFromTable("papillon", attribut, parameter);
reader.Read();
Debug.Log(reader[0]);
reader.Close();

Ответы [ 3 ]

7 голосов
/ 01 апреля 2011

Блок использования закрывает соединение здесь (при выходе)

using (mysqlCommand = new MySqlCommand(query, mysqlConnection))
2 голосов
/ 01 апреля 2011

Если я не ошибаюсь, это утверждение использования убивает читателя. Как только блок использования завершается, IDisposable сработает на вашем MySQLConnection, закрывая и удаляя ваше соединение с базой данных.

1 голос
/ 01 апреля 2011

Ваш читатель закрывается, потому что он включен в это выражение using.Когда команда и соединение расположены, читатель тоже.Вам нужно будет вытащить данные, прежде чем утилизировать считыватель.

...