我开发了一个 ASP.NET 应用程序,它接收来自用户的输入,它基本上是由 LogParser 运行的 SQL 查询。(此输入保存在“sql1”字符串中。它可以工作,但工作缓慢。对于 60 MB 的日志文件,我什至收到了内存不足异常。我在下面分享我的代码,有什么想法可以加快速度有没有办法直接将 ILogRecordSet 对象插入 DataGrid,而无需先将其转换为 DataSet?
LogQuery oLogQuery = new LogQuery();
COMIISW3CInputFormat eventLog = new COMIISW3CInputFormat();
ILogRecord numReq = null;
ILogRecordSet numSet = null;
numSet = oLogQuery.Execute(sql1, eventLog);
DataTable queryTable = new DataTable("Query");
for (int i = 0; i < numSet.getColumnCount(); i++)
{
DataColumn col = new DataColumn();
col.ColumnName = numSet.getColumnName(i);
switch (numSet.getColumnType(i))
{
case 1:
col.DataType = Type.GetType("System.Int32");
break;
case 2:
col.DataType = Type.GetType("System.Double");
break;
case 4:
col.DataType = Type.GetType("System.DateTime");
break;
default:
col.DataType = Type.GetType("System.String");
break;
}
queryTable.Columns.Add(col);
}
while (!numSet.atEnd())
{
numReq = numSet.getRecord();
DataRow row = queryTable.NewRow();
for (int i = 0; i < numSet.getColumnCount(); i++)
row[i] = HttppUtility.HtmlEncode(Convert.ToString(numReq.getValue(i)));
queryTable.Rows.Add(row);
numSet.moveNext();
}
DataSet ds = new DataSet();
ds.Tables.Add(queryTable);
QueryGrid.DataSource = ds;
QueryGrid.DataBind();