打开网站,有时候出现DataReader报错!!怎么解决
打开网站,有时候出现DataReader报错!!
报错如下:
“/”应用程序中的服务器错误。
________________________________________
已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。]
System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) +4846116
System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) +23
System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) +144
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +87
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +130
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +94
LearnEng.DBUtility.DBHelper.GetDate(String helpType, String dateString) in E:\LearnEng2\LearnEng\DBUtility\DBHelper.cs:270
LearnEng.DAL.le_Grade.ListView() in E:\LearnEng2\LearnEng\DAL\le_Grade.cs:268
LearnEng.BLL.le_Grade.ListView() in E:\LearnEng2\LearnEng\BLL\le_Grade.cs:215
LearnEng.Web.EngWord.List() in E:\LearnEng2\LearnEng\Web\EngWord.aspx.cs:160
LearnEng.Web.EngWord.Page_Load(Object sender, EventArgs e) in E:\LearnEng2\LearnEng\Web\EngWord.aspx.cs:53
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
连接代码如下:
public static SqlConnection Connection
{
get
{
string connString = ConfigurationManager.ConnectionStrings["conStr"].ToString();
if (connection == null)
{
connection = new SqlConnection(connString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
/// <summary>
/// 无参数返回Table
/// </summary>
/// <param name="helpType"></param>
/// <param name="dateString"></param>
/// <returns></returns>
public static DataTable GetDate(string helpType, string dateString)
{
DataSet ds = new DataSet();
SqlCommand cmd = null;
if (helpType == "pro")
{
cmd = new SqlCommand();
cmd.Connection = Connection;
cmd.CommandText = dateString;
cmd.CommandType = CommandType.StoredProcedure;
}
else if (helpType == "sql")
{
cmd = new SqlCommand(dateString, Connection);
}
else
{
return null;
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
Connection.Close();
return ds.Tables[0];
}