问题
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