示例#1
0
        private void LoadResult(DataTable dt, IDataReader reader, DataAccessBase Dab, bool ReportProgress)
        {
            DataTable schema = reader.GetSchemaTable();
            foreach (DataRow row in schema.Rows)
            {
                Type t = (Type)row["DataType"];
                if (t == typeof(byte[]))
                {
                    t = typeof(string);
                }
                DataColumn col = new DataColumn(row["ColumnName"].ToString(), t);
                dt.Columns.Add(col);
            }

            int rowCount = 0;

            while (reader.Read())
            {
                object[] vals = new object[dt.Columns.Count];
                foreach (DataColumn col in dt.Columns)
                {
                    if (reader[col.Ordinal].GetType() == typeof(byte[]))
                        vals[col.Ordinal] = BitConverter.ToString((byte[])reader[col.Ordinal]);
                    else
                        vals[col.Ordinal] = reader[col.Ordinal];
                }

                dt.LoadDataRow(vals, false);

                if (ReportProgress && ++rowCount == 1000)
                    Dab.OnRunQueryRowCreated(dt.AsDataView().ToTable());
            }
        }