Я столкнулся с проблемой открытого соединения DataReader в ASP.NET C# При чтении записей из базы данных MySQL. Я не знаю, как в первый раз выполнения datareader он показывал мне открытую связь.Есть уже открытый DataReader, связанный с этим соединением, который должен быть закрыт первым?
ошибка, как показано ниже на DAL
MySqlDataReader reader = myCommand.ExecuteReader();
Существует уже открытая DataReader, связанные с этим соединением, которое должно быть закрыто первым
Пример кода
// BAL function call the DAL function
MainFunction()
{
...
...
using (MySqlDataReader reader = clsDAL.GetALL(SqlQuery, Parms))
{
while (reader.Read())
{
clsVitalsDisplay obj = new clsVitalsDisplay();
obj.BySessionId = Convert.ToInt32(reader["BySessionId"].ToString());
obj.ByDevSessionId_LifeTouchHeartRate = Convert.ToInt32(reader["ByDevSessionId_LifeTouchHeartRate"].ToString());
obj.HumanReadableDeviceId_LifeTouch = reader["HumanReadableDeviceId_LifeTouch"].ToString();
listLifetouchHeartRate.Add(obj);
}
}
}
// Getting the Error while Read the details from database in DAL (Data Access Layer) class at MySqlDataReader reader = myCommand.ExecuteReader();
public static MySqlDataReader GetALL(String _query, MySqlParameter[] sqlParameter)
{
MySqlCommand myCommand = new MySqlCommand();
try
{
myCommand.Connection = OpenConnection();
myCommand.CommandText = _query;
myCommand.Parameters.AddRange(sqlParameter);
myAdapter.SelectCommand = myCommand;
//Face the error at below line
MySqlDataReader reader = myCommand.ExecuteReader();
myCommand.Dispose();
return reader;
}
catch (MySqlException ex)
{
ErrorLog.ErrorLog.Log_Err("", ex, Global.gUserId.ToString());
return null;
}
finally
{
}
}
ASP.NET и это исключение звучит подозрительно: http://stackoverflow.com/questions/9705637/executereader-requires-an-open-and-available-connection-the-connections-curren/9707060#9707060 Короче: trash 'clsDAL' и использовать' using'-statement. Я предполагаю, что ваша связь «статична», не так ли? –
Вы не можете открыть более одного считывателя с тем же соединением. Вы не закрываете считыватель в любом месте этого кода. Я подозреваю, что функция OpenConnection() возвращает тот же экземпляр подключения. Вы должны закрыть читателя в конце вашего метода. Возможно, вы создаете его в некоторых предыдущих вызовах функций. – wonderbell
Да, это STATIC-соединение, и я возвращаю тип функции id static MySqlDataReader. public static MySqlDataReader GetALL (String _query, MySqlParameter [] sqlParameter) Поэтому я не могу использовать использование - statemnet из-за типа возврата – skt