我在ASP.NET c#中面对DataReader打开连接问题从MySQL数据库中读取记录。我不知道第一次执行datareader时它是如何显示我打开连接的。
以下错误在DAL
MySqlDataReader reader = myCommand.ExecuteReader();
已经有一个与此Connection关联的开放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
{
}
}
答案 0 :(得分:0)
我已通过关闭已打开的数据库连接解决了此问题,如果打开如下。它的工作正常。
public static MySqlDataReader GetALL(String _query, MySqlParameter[] sqlParameter)
{
MySqlCommand myCommand = new MySqlCommand();
try
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
myCommand.Connection = OpenConnection();
myCommand.CommandText = _query;
myCommand.Parameters.AddRange(sqlParameter);
myAdapter.SelectCommand = myCommand;
MySqlDataReader reader = myCommand.ExecuteReader();
myCommand.Dispose();
return reader;
}
catch (MySqlException ex)
{
ErrorLog.ErrorLog.Log_Err("", ex, Global.gUserId.ToString());
return null;
}
finally
{
}
}