2

我开发了一个 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();
4

0 回答 0