我有一个动态查询,它返回大约590,000条记录。它第一次运行成功,但是如果我再次运行它,我仍然得到一个System.OutOfMemoryException
。可能发生这种情况的一些原因是什么?
错误发生在这里:
public static DataSet GetDataSet(string databaseName,string
storedProcedureName,params object[] parameters)
{
//Creates blank dataset
DataSet ds = null;
try
{
//Creates database
Database db = DatabaseFactory.CreateDatabase(databaseName);
//Creates command to execute
DbCommand dbCommand = db.GetStoredProcCommand(storedProcedureName);
dbCommand.CommandTimeout = COMMAND_TIMEOUT;
//Returns the list of SQL parameters associated with that stored proecdure
db.DiscoverParameters(dbCommand);
int i = 1;
//Loop through the list of parameters and set the values
foreach (object parameter in parameters)
{
dbCommand.Parameters[i++].Value = parameter;
}
//Retrieve dataset and set to ds
ds = db.ExecuteDataSet(dbCommand);
}
//Check for exceptions
catch (SqlException sqle)
{
throw sqle;
}
catch (Exception e)
{
throw e; // Error is thrown here.
}
//Returns dataset
return ds;
}
以下是在按钮单击上运行的代码:
protected void btnSearchSBIDatabase_Click(object sender, EventArgs e)
{
LicenseSearch ls = new LicenseSearch();
DataTable dtSearchResults = new DataTable();
dtSearchResults = ls.Search();
Session["dtSearchResults"] = dtSearchResults;
Response.Redirect("~/FCCSearch/SearchResults.aspx");
}
else
lblResults.Visible = true;
}
发布于 2008-12-10 16:25:06
也许您没有处理上一次运行的前一个连接/结果类,这意味着它们仍然在内存中挂起。
发布于 2008-12-10 16:32:37
很明显,你没有处理掉一些东西。
在临时使用实现IDisposable的对象时,请考虑使用" using“命令。
发布于 2012-04-13 14:39:51
尝试尽可能多地分解你的大数据,因为我已经遇到过很多次这种类型的问题。其中我有超过10个Lakh记录,有15列。
https://stackoverflow.com/questions/356645
复制相似问题