示例#1
0
        public static void ToConsole(this DbDataReader reader, int maxRow = 0)
        {
            while (reader.HasRows)
            {
                DataTable schemaTable = reader.GetSchemaTable();

                var schema = schemaTable
                             .AsEnumerable()
                             .Select(row => new
                {
                    Name = row.Field <string>("ColumnName"),
                    Size = row.Field <int>("ColumnSize"),
                    Type = row.Field <Type>("DataType")
                });

                string[] headers = schema.Select(row => row.Name).ToArray();

                var D = new OutputDataLine(cout.TrimWriteLine, headers.Length);

                D.MeasureWidth(schema.Select(row => row.Size).ToArray());
                D.MeasureWidth(headers);
                D.MeasureWidth(schema.Select(row => row.Type).ToArray());

                D.DisplayLine();
                D.DisplayLine(headers);
                D.DisplayLine();

                if (!reader.HasRows)
                {
                    cout.WriteLine("<0 row>");
                    return;
                }

                object[] values  = new object[headers.Length];
                int      count   = 0;
                bool     limited = false;
                while (reader.Read())
                {
                    reader.GetValues(values);
                    D.DisplayLine(values);

                    if (++count == maxRow)
                    {
                        limited = true;
                        break;
                    }
                }

                D.DisplayLine();
                cout.WriteLine("<{0} row{1}> {2}",
                               count,
                               count > 1 ? "s" : "",
                               limited ? "limit reached" : ""
                               );

                reader.NextResult();
            }
        }
示例#2
0
        private void ToHorizontalGrid()
        {
            line.MeasureWidth(headers);
            foreach (DataRow row in dt.Rows)
            {
                line.MeasureWidth(row.ItemArray);
            }

            line.DisplayLine();
            line.DisplayLine(headers);
            line.DisplayLine();

            if (dt.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in dt.Rows)
            {
                line.DisplayLine(row.ItemArray);
            }

            line.DisplayLine();
        }