系统最近总是不定时的出现:Invalid attempt to Read when reader is closed 和 The connection is closed 这两个错误。下面是报错的代码。
public DataSet SelectDataBySQL(string sql)
{
OracleConnection conn = RedOralceDbPool.GetConnection();
OracleDataAdapter da = new OracleDataAdapter(sql, conn);
DataSet ds = new DataSet();
try
{
this.Open(conn);
da.Fill(ds);
}
catch (OracleException ex)
{
logger.Error(ex.Message);
}
finally
{
this.Close(conn);
}
return ds;
}
我不知道DataAdapter在底层是否采用DataReader来实现的。
但是你这个错误通常会出现在使用DataReader读取数据的过程中,Connection实例被关闭而造成的。
我啊.net的Winform程序中访问Access数据库时出错的,同样的这个错误。但测试debug下没有这个情况,在Publish发布后测试人员测试到了,怀疑是数据库访问的频繁问题。网上也有人说是用static变量没释放,我只用了int static idx=1;生成文件时递增,但貌似不应是这个原因,网上有人把static去除了也是一样的问题。不知是不是很多用户同时访问数据库导致的。待解决~~