Я разработал приложение ASP.NET, которое получает данные от пользователя, которые в основном представляют собой SQL-запросы, выполняемые LogParser.(Этот ввод хранится в строке «sql1». Он работает, но работает медленно. Для файла журнала объемом 60 МБ я даже получил исключение вне памяти. Ниже я поделился своим кодом, любые идеи по ускорениювверх? Есть ли способ напрямую вставить объект 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();