连接字符串超过几次时使用StringBuilders.
特别是这里:
detailOutput += ReportDetails;
还使用DataReader.DataReader将返回支持IDataRecord的记录,IDataRecord具有与DataRow类似的接口.
当我在ASP.NET中使用DataTables和DataSets时,你正在使用大约相同的行数来处理OOM,其中工作进程的内存有限,然后才会因为过多的内存使用而获得回收.这就是为什么我一直在积极地切换到DataReaders.
更新:
DataReader解决方案看起来像......(TableReaders存在,但它不会在内存保护方面为你买任何东西,你只需要一个与DataReaders更相似的接口)
internal static String SaveARSUpdateHTML(DbDataReader myReader, string fileName) { if (myReader.HasRows) while (myReader.Read()) { object something = myReader["TF"]; } else Console.WriteLine("No rows returned."); myReader.Close();