DataTableReader.GetSchemaTable Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных DataTableReader.
public:
override System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Возвращаемое значение
Объект DataTable, описывающий метаданные столбцов.
Исключения
Объект DataTableReader закрыт.
Примеры
В следующем примере консольного приложения извлекаются сведения о схеме указанного столбца. Передайте процедуре DisplaySchemaTableInfo
DataTableReader и целое число, представляющее порядковый номер столбца в DataTableReader
, и процедура выводит сведения о схеме в окно консоли.
private static void TestGetSchemaTable()
{
// Set up the data adapter, using information from
// the AdventureWorks sample database.
// Modify the SQL expression to retrieve
// data from a different table.
SqlDataAdapter adapter =
SetupDataAdapter("SELECT * FROM Sales.Customer");
// Fill the DataTable, retrieving all the schema information.
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataTable table = new DataTable();
adapter.Fill(table);
// Create the DataTableReader, and close it when done.
using (DataTableReader reader = new DataTableReader(table))
{
// Modify the column number to display information
// about a column other than column 0.
DisplaySchemaTableInfo(reader, 0);
}
Console.WriteLine();
Console.WriteLine("Press Enter to finish.");
Console.ReadLine();
}
private static void DisplaySchemaTableInfo(
DataTableReader reader, int ordinal)
{
// Given a DataTableReader, display schema
// information about a particular column.
try
{
DataTable schemaTable = reader.GetSchemaTable();
DataRow row = schemaTable.Rows[ordinal];
foreach (DataColumn col in schemaTable.Columns)
{
Console.WriteLine("{0}: {1}",
col.ColumnName, row[col.Ordinal]);
}
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("{0} is an invalid column number.",
ordinal);
}
}
private static SqlDataAdapter SetupDataAdapter(String sqlString)
{
// Assuming all the default settings, create a
// SqlDataAdapter working with the AdventureWorks
// sample database that's available with
// SQL Server.
String connectionString =
"Data source=(local);initial catalog=AdventureWorks;" +
"Integrated Security=True";
return new SqlDataAdapter(sqlString, connectionString);
}
Private Sub TestGetSchemaTable()
' Set up the data adapter, using information from
' the AdventureWorks sample database.
' Modify the SQL expression to retrieve
' data from a different table.
Dim adapter As SqlDataAdapter = _
SetupDataAdapter("SELECT * FROM Sales.Customer")
' Fill the DataTable, retrieving all the schema information.
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim table As New DataTable
adapter.Fill(table)
' Create the DataTableReader, and close it when done.
Using reader As New DataTableReader(table)
' Modify the column number to display information
' about a column other than column 0.
DisplaySchemaTableInfo(reader, 0)
End Using
Console.WriteLine()
Console.WriteLine("Press Enter to finish.")
Console.ReadLine()
End Sub
Private Sub DisplaySchemaTableInfo( _
ByVal reader As DataTableReader, ByVal ordinal As Integer)
' Given a DataTableReader, display schema
' information about a particular column.
Try
Dim schemaTable As DataTable = reader.GetSchemaTable()
Dim row As DataRow = schemaTable.Rows(ordinal)
For Each col As DataColumn In schemaTable.Columns
Console.WriteLine("{0}: {1}", _
col.ColumnName, row(col.Ordinal))
Next
Catch ex As IndexOutOfRangeException
Console.WriteLine("{0} is an invalid column number.", _
ordinal)
End Try
End Sub
Private Function SetupDataAdapter( _
ByVal sqlString As String) As SqlDataAdapter
' Assuming all the default settings, create a SqlDataAdapter
' working with the AdventureWorks sample database that's
' available with SQL Server.
Dim connectionString As String = _
"Data Source=(local);" & _
"Initial Catalog=AdventureWorks;" & _
"Integrated Security=true"
Return New SqlDataAdapter(sqlString, connectionString)
End Function
Комментарии
Метод GetSchemaTable возвращает метаданные о каждом столбце в следующем порядке:
Столбец DataReader | Описание |
---|---|
ColumnName | Имя столбца, отображаемого в .DataTable |
ColumnOrdinal | Порядковый номер столбца |
ColumnSize | –1, если ColumnSize свойство (или MaxLength) объекта не может быть определено или не имеет отношения; в противном случае — значение 0 или положительное целое число, содержащее MaxLength DataColumn значение . |
NumericPrecision | Если тип столбца является числовым, это максимальная точность столбца. Если тип столбца не является числовым типом данных, это значение null. |
NumericScale | Если тип данных столбца имеет компонент масштабирования, верните число цифр справа от десятичной запятой. В противном случае возвращается значение NULL. |
DataType | Базовый тип столбца. |
ProviderType | Признак типа данных столбца. Если тип данных столбца отличается от строки к строке, это значение равно Object. Этот столбец не может содержать значение NULL. |
IsLong | true Значение , если тип данных столбца — и String его MaxLength свойство равно -1. В противном случае — значение false . |
AllowDBNull | true Значение , если ограничение AllowDbNull имеет значение true для столбца; в противном случае — false . |
IsReadOnly | true Значение , если столбец не может быть изменен; в противном случае false . |
IsRowVersion | false для каждого столбца. |
IsUnique | true : две строки в DataTable не могут иметь одинаковое значение в этом столбце. IsUnique Параметр гарантированно имеет значение true, если столбец представляет ключ сам по себе или имеется ограничение типа UNIQUE, которое применяется только к этому столбцу. false : столбец может содержать повторяющиеся значения в DataTable . По умолчанию этот столбец имеет значение false . |
IsKey | true : столбец является одним из наборов столбцов, которые, вместе взятые, однозначно идентифицируют строку в DataTable. Набор столбцов, для IsKey которым задано значение , true должен однозначно идентифицировать строку в DataTable . Нет необходимости, чтобы этот набор столбцов являлся минимальным. Этот набор столбцов может быть создан из первичного DataTable ключа, уникального ограничения или уникального индекса. false : столбец не требуется для уникальной идентификации строки. Это значение имеет значение , true если столбец участвует в одном или составном первичном ключе. В противном случае его значение равно false . |
IsAutoIncrement | true : столбец присваивает значения новым строкам с фиксированным шагом. false : столбец не присваивает значения новым строкам с фиксированным шагом. По умолчанию этот столбец имеет значение false . |
BaseCatalogName | Имя каталога в хранилище данных, содержащем столбец. Null Значение , если не удается определить имя базового каталога. Значением по умолчанию для этого столбца null является значение . |
BaseSchemaName | Это значение всегда равно Null . |
BaseTableName | Имя DataTable. |
BaseColumnName | Имя столбца в DataTable. |
AutoIncrementSeed | Значение DataTableсвойства объекта AutoIncrementSeed . |
Шаг autoIncrementStep | Значение DataTableсвойства объекта AutoIncrementStep . |
DefaultValue | Значение DataColumnсвойства объекта DefaultValue . |
Expression | Строка выражения, если текущий столбец является столбцом выражений и все столбцы, используемые в выражении, принадлежат к тому же T:System.Data.DataTable , который содержит столбец выражения; в противном случае null — значение . |
ColumnMapping | Значение, MappingType связанное DataColumnс . Тип может быть одним из Attribute , Element , Hidden или SimpleContent . Значение по умолчанию — Element . |
BaseTableNamespace | Значение DataTableсвойства объекта Namespace . |
BaseColumnNamespace | Значение DataColumnсвойства объекта Namespace . |