コード例 #1
0
        public static DataTable CreateSchemaTable(this QueryReader queryReader)
        {
            if (queryReader == null)
            {
                throw new ArgumentNullException(nameof(queryReader));
            }

            var dataTable           = new DataTable(@"Results");
            var existingColumnNames = new HashSet <string>();

            for (var i = 0; i < queryReader.ColumnCount; i++)
            {
                var columnName       = queryReader.GetColumnName(i);
                var uniqueColumnName = GenerateUniqueColumnName(existingColumnNames, columnName);
                var columnType       = queryReader.GetColumnType(i);
                var dataColumn       = new DataColumn(uniqueColumnName, columnType);
                dataColumn.Caption = columnName;
                dataTable.Columns.Add(dataColumn);
                existingColumnNames.Add(uniqueColumnName);
            }

            return(dataTable);
        }
コード例 #2
0
 /// <summary>
 /// Gets the data type information for the specified field.
 /// </summary>
 /// <param name="i">The index of the field to find.</param>
 /// <returns>
 /// The data type information for the specified field.
 /// </returns>
 /// <exception cref="T:System.IndexOutOfRangeException">The index passed was outside the range of 0 through <see cref="P:System.Data.IDataRecord.FieldCount" />.</exception>
 public string GetDataTypeName(int i)
 {
     EnsureNotDisposed();
     return(_queryReader.GetColumnType(i).FullName);
 }