开发者

Invalid attempt to Read when reader is closed

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());
   }
   f开发者_如何转开发inally {}

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


The using block closes the connection here (on exit)

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


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜