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
Возвращаемое значение
A DataTable , описывающий метаданные столбца.
Исключения
Примеры
В следующем примере консольного приложения извлекаются сведения о схеме указанного столбца.
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 | Порядковый номер столбца |
| РазмерСтолбца | -1, если ColumnSize свойство (или MaxLength) свойства DataColumn невозможно определить или не имеет значения; в противном случае — значение 0 или положительное целое число, содержащее MaxLength значение. |
| Числовойprecision | Если тип столбца является числовым типом, это максимальная точность столбца. Если тип столбца не является числовым типом данных, это значение NULL. |
| NumericScale | Если тип данных столбца имеет компонент масштабирования, возвращается число цифр справа от десятичной запятой. В противном случае возвращает значение NULL. |
| Тип данных | Базовый тип столбца. |
| ProviderType | Индикатор типа данных столбца. Если тип данных столбца зависит от строки к строке, это значение равно Object. Этот столбец не может содержать значение NULL. |
| IsLong |
true Значение -1, если тип данных столбца имеет StringMaxLength значение -1. В противном случае — false. |
| AllowDBNull |
true Значение true для столбца, если для столбца задано ограничение AllowDbNull; falseв противном случае . |
| IsReadOnly |
true Значение , если столбец не может быть изменен; в противном случае false. |
| IsRowVersion |
false, для каждого столбца. |
| IsUnique |
true: в этом столбце DataTable нет двух строк.
IsUnique Гарантируется, что столбец представляет ключ самостоятельно или имеет ограничение типа 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 | Значение DataTableAutoIncrementSeed свойства. |
| AutoIncrementStep | Значение DataTableAutoIncrementStep свойства. |
| Значение по умолчанию | Значение DataColumnDefaultValue свойства. |
| Expression | Строка выражения, если текущий столбец является столбцом выражения, а все столбцы, используемые в выражении, относятся к тому же T:System.Data.DataTable , что содержит столбец выражения; в противном случае null. |
| ColumnMapping | Значение, связанное MappingTypeDataColumnс . Тип может быть одним из Attribute, ElementHiddenили SimpleContent. Значение по умолчанию — Element. |
| BaseTableNamespace | Значение DataTableNamespace свойства. |
| BaseColumnNamespace | Значение DataColumnNamespace свойства. |