Invalid attempt to Read when reader is closed

孤者浪人 提交于 2019-12-20 06:18:21

问题


I'm working on C# and MySql request. I'm trying to retrieve my datas in my db but I have this error message : Invalid attempt to Read when reader is closed.

Thanks for your help guys :)

I have this function :

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;
}

And next somewhere in my code I doing this:

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();

回答1:


The using block closes the connection here (on exit)

using (mysqlCommand = new MySqlCommand(query, mysqlConnection))



回答2:


If I'm not mistaken, it's the using statement that is killing the reader. Once the using block is terminated, IDisposable will fire on your MySQLConnection, closing and disposing your connection to the database.




回答3:


Your reader is getting closed because it's wrapped in that using statement. When the command and connection are disposed, so is the reader. You'll need to get the data out before disposing the reader.



来源:https://stackoverflow.com/questions/5516914/invalid-attempt-to-read-when-reader-is-closed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!