I've developed an ASP.NET application that receives input from the user which is basically an SQL query ran by LogParser. (This input is kept in the "sql1" string. It works, but works slowly. For a log file of 60 MB, I've even received an outofmemory exception. I'm sharing my code down below, any ideas to speed this up? Is there a way to directly insert the ILogRecordSet object to a DataGrid, without first converting it to a 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();