DbDataAdapter.FillSchema Метод

Определение

Добавляет объект DataTable в объект DataSet и настраивает схему для получения соответствия со схемой в источнике данных.

Перегрузки

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Добавляет объект DataTable в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанного значения типа SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Настраивает схему для указанного объекта DataTable, основываясь на указанном значении типа SchemaType, командной строке и значениях типа CommandBehavior.

FillSchema(DataSet, SchemaType, String)

Добавляет объект DataTable в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанных SchemaType и DataTable.

FillSchema(DataTable, SchemaType)

Настраивает схему указанного объекта DataTable на основе указанного SchemaType.

FillSchema(DataSet, SchemaType)

Добавляет объект DataTable с именем Table в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанного значения типа SchemaType.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет объект DataTable в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанного значения типа SchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Параметры

dataSet
DataSet

Объект DataSet для заполнения схемой из источника данных.

schemaType
SchemaType

Одно из значений перечисления SchemaType.

command
IDbCommand

Оператор SQL SELECT используется для извлечения строки из источника данных.

srcTable
String

Имя исходной таблицы, используемое для сопоставления таблиц.

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.

Возвращаемое значение

Массив объектов DataTable, который содержит сведения схемы, возвращенные из источника данных.

Комментарии

Метод FillSchema извлекает схему из источника данных с помощью SelectCommand. Объект соединения, связанный с , должен быть допустимым SelectCommand , но не должен быть открыт. Если соединение закрывается до FillSchema вызова, оно открывается для получения данных, а затем закрывается. Если подключение открыто до FillSchema вызова, оно остается открытым.

Операция FillSchema добавляет к целевому DataTableDataSetобъекту . Затем он добавляет столбцы в DataColumnCollectionDataTableи настраивает следующие DataColumn свойства, если они существуют в источнике данных:

FillSchema также настраивает PrimaryKey свойства и Constraints в соответствии со следующими правилами:

  • Если один или несколько столбцов первичного SelectCommandключа возвращаются , они используются в качестве столбцов первичного DataTableключа для .

  • Если не возвращаются столбцы первичного ключа, но уникальные столбцы, то уникальные столбцы используются в качестве первичного ключа, если и только в том случае, если все уникальные столбцы не являются возвращаемыми. Если какой-либо из столбцов допускает значение NULL, UniqueConstraint к добавляется ConstraintCollection, но PrimaryKey свойство не задано.

  • Если возвращаются как столбцы первичного ключа, так и уникальные столбцы, столбцы первичного ключа используются в качестве столбцов первичного DataTableключа для .

Обратите внимание, что первичные ключи и ограничения уникальности добавляются в ConstraintCollection в соответствии с предыдущими правилами, но другие типы ограничений не добавляются.

Если уникальный кластеризованный индекс определен в столбце или столбцах в таблице SQL Server, а ограничение первичного ключа определено в отдельном наборе столбцов, будут возвращены имена столбцов в кластеризованном индексе. Чтобы вернуть имя или имена столбцов первичного ключа, используйте указание запроса с инструкцией SELECT, указывающей имя индекса первичного ключа. Дополнительные сведения об указании запросов см. в разделе Подсказки (Transact-SQL) — запрос.

IDataAdapter Если при заполнении столбца встречаются повторяющиеся DataTableстолбцы, он создает имена для последующих столбцов с использованием шаблонов columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet по шаблону Column1, Column2 и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "Table1", "Table2" и т. д.). Если приложение использует имена столбцов и таблиц, убедитесь в отсутствии конфликтов с этими шаблонами именования.

Метод FillSchema поддерживает сценарии, в DataSet которых содержит несколько DataTable объектов, имена которых отличаются только по регистру. В таких случаях выполняет сравнение с учетом регистра, FillSchema чтобы найти соответствующую таблицу, и создает новую таблицу, если точного соответствия не существует. Это поведение иллюстрируется в следующем коде C#.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Если FillSchema вызывается и DataSet содержит только один DataTable объект, имя которого отличается только в соответствии с регистром, то DataTable обновляется. В этом сценарии сравнение не учитывает регистр. Это поведение иллюстрируется в следующем коде C#.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchema не возвращает строки. Используйте метод для Fill добавления строк в DataTableобъект .

Примечание

При обработке пакетных инструкций SQL, возвращающих несколько результатов, реализация FillSchema для поставщика данных платформа .NET Framework для OLE DB получает сведения о схеме только для первого результата. Чтобы получить сведения о схеме для нескольких результатов, используйте Fill с заданным значением MissingSchemaActionAddWithKey.

При использовании метода FillSchema поставщик данных .NET Framework для SQL Server добавляет предложение FOR BROWSE к выполняемому оператору. Пользователь должен быть осведомлен о возможных побочных эффектах, например о проблемах, возникающих при использовании операторов SET FMTONLY ON. Дополнительные сведения см. в разделе SET FMTONLY (Transact-SQL).

Примечания для тех, кто наследует этот метод

Эта реализация FillSchema(DataSet, SchemaType) метода защищена и предназначена для использования поставщиком данных платформа .NET Framework.

См. также раздел

Применяется к

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Настраивает схему для указанного объекта DataTable, основываясь на указанном значении типа SchemaType, командной строке и значениях типа CommandBehavior.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Параметры

dataTable
DataTable

Объект DataTable для заполнения схемой из источника данных.

schemaType
SchemaType

Одно из значений перечисления SchemaType.

command
IDbCommand

Оператор SQL SELECT используется для извлечения строки из источника данных.

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.

Возвращаемое значение

Объект DataTable содержит сведения схемы, возвращенные из источника данных.

Комментарии

Метод FillSchema извлекает схему из источника данных с помощью SelectCommand. Объект соединения, связанный с , должен быть допустимым SelectCommand , но не должен быть открыт. Если соединение закрывается до FillSchema вызова, оно открывается для получения данных, а затем закрывается. Если подключение открыто до FillSchema вызова, оно остается открытым.

Операция FillSchema добавляет к целевому DataTableDataSetобъекту . Затем он добавляет столбцы в DataColumnCollectionDataTableи настраивает следующие DataColumn свойства, если они существуют в источнике данных:

FillSchema также настраивает PrimaryKey свойства и Constraints в соответствии со следующими правилами:

  • Если один или несколько столбцов первичного SelectCommandключа возвращаются , они используются в качестве столбцов первичного DataTableключа для .

  • Если не возвращаются столбцы первичного ключа, но уникальные столбцы, то уникальные столбцы используются в качестве первичного ключа, если и только в том случае, если все уникальные столбцы не являются возвращаемыми. Если какой-либо из столбцов допускает значение NULL, UniqueConstraint к добавляется ConstraintCollection, но PrimaryKey свойство не задано.

  • Если возвращаются как столбцы первичного ключа, так и уникальные столбцы, столбцы первичного ключа используются в качестве столбцов первичного DataTableключа для .

Обратите внимание, что первичные ключи и ограничения уникальности добавляются в ConstraintCollection в соответствии с предыдущими правилами, но другие типы ограничений не добавляются.

Если уникальный кластеризованный индекс определен в столбце или столбцах в таблице SQL Server, а ограничение первичного ключа определено в отдельном наборе столбцов, будут возвращены имена столбцов в кластеризованном индексе. Чтобы вернуть имя или имена столбцов первичного ключа, используйте указание запроса с инструкцией SELECT, указывающей имя индекса первичного ключа. Дополнительные сведения об указании запросов см. в разделе Подсказки (Transact-SQL) — запрос.

IDataAdapter Если при заполнении столбца встречаются повторяющиеся DataTableстолбцы, он создает имена для последующих столбцов с использованием шаблонов columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet по шаблону Column1, Column2 и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "Table1", "Table2" и т. д.). Если приложение использует имена столбцов и таблиц, убедитесь в отсутствии конфликтов с этими шаблонами именования.

FillSchema не возвращает строки. Используйте метод для Fill добавления строк в DataTableобъект .

Примечание

При обработке пакетных инструкций SQL, возвращающих несколько результатов, реализация FillSchema для поставщика данных платформа .NET Framework для OLE DB получает сведения о схеме только для первого результата. Чтобы получить сведения о схеме для нескольких результатов, используйте Fill с заданным значением MissingSchemaActionAddWithKey.

При использовании метода FillSchema поставщик данных .NET Framework для SQL Server добавляет предложение FOR BROWSE к выполняемому оператору. Пользователь должен быть осведомлен о возможных побочных эффектах, например о проблемах, возникающих при использовании операторов SET FMTONLY ON. Дополнительные сведения см. в разделе SET FMTONLY (Transact-SQL).

Примечания для тех, кто наследует этот метод

Эта реализация FillSchema(DataSet, SchemaType) метода защищена и предназначена для использования поставщиком данных платформа .NET Framework.

См. также раздел

Применяется к

FillSchema(DataSet, SchemaType, String)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет объект DataTable в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанных SchemaType и DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Параметры

dataSet
DataSet

Объект DataSet, куда вставляется схема.

schemaType
SchemaType

Одно из значений SchemaType, указывающее, как следует вставлять схему.

srcTable
String

Имя исходной таблицы, используемое для сопоставления таблиц.

Возвращаемое значение

Ссылка на коллекцию объектов DataTable, которые были добавлены в DataSet.

Исключения

Не удалось найти исходную таблицу для получения схемы.

Примеры

В следующем примере используется производный класс SqlDataAdapter, для заполнения DataSet схемы и возвращает .DataSet

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Комментарии

Этот метод извлекает сведения о схеме из источника данных с помощью SelectCommand.

Операция FillSchema добавляет к целевому DataTableDataSetобъекту . Затем он добавляет столбцы в DataColumnCollectionDataTableи настраивает следующие DataColumn свойства, если они существуют в источнике данных:

FillSchema также настраивает PrimaryKey свойства и Constraints в соответствии со следующими правилами:

  • Если один или несколько столбцов первичного SelectCommandключа возвращаются , они используются в качестве столбцов первичного DataTableключа для .

  • Если не возвращаются столбцы первичного ключа, но уникальные столбцы, то уникальные столбцы используются в качестве первичного ключа, если и только в том случае, если все уникальные столбцы не являются возвращаемыми. Если какой-либо из столбцов допускает значение NULL, UniqueConstraint к добавляется ConstraintCollection, но PrimaryKey свойство не задано.

  • Если возвращаются как столбцы первичного ключа, так и уникальные столбцы, столбцы первичного ключа используются в качестве столбцов первичного DataTableключа для .

Обратите внимание, что первичные ключи и ограничения уникальности добавляются в ConstraintCollection в соответствии с предыдущими правилами, но другие типы ограничений не добавляются.

Если уникальный кластеризованный индекс определен в столбце или столбцах в таблице SQL Server, а ограничение первичного ключа определено в отдельном наборе столбцов, будут возвращены имена столбцов в кластеризованном индексе. Чтобы вернуть имя или имена столбцов первичного ключа, используйте указание запроса с инструкцией SELECT, указывающей имя индекса первичного ключа. Дополнительные сведения об указании запросов см. в разделе Подсказки (Transact-SQL) — запрос.

Сведения о первичном ключе используются во время Fill поиска и замены строк, ключевых столбцов которых совпадают. Если это не является требуемым поведением, используйте Fill без запроса сведений о схеме.

DbDataAdapter Если при заполнении столбца встречаются повторяющиеся DataTableстолбцы, он создает имена для последующих столбцов с использованием шаблонов columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet по шаблону Column1, Column2 и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "Table1", "Table2" и т. д.). Если приложение использует имена столбцов и таблиц, убедитесь в отсутствии конфликтов с этими шаблонами именования.

Метод FillSchema поддерживает сценарии, в DataSet которых содержит несколько DataTable объектов, имена которых отличаются только по регистру. В таких случаях выполняет сравнение с учетом регистра, FillSchema чтобы найти соответствующую таблицу, и создает новую таблицу, если точного соответствия не существует. Это поведение иллюстрируется в следующем коде C#.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Если FillSchema вызывается и DataSet содержит только один DataTable объект, имя которого отличается только в соответствии с регистром, то DataTable обновляется. В этом сценарии сравнение не учитывает регистр. Это поведение иллюстрируется в следующем коде C#.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

Объект IDbConnection , связанный с командой select, должен быть допустимым, но его не нужно открывать. Если объект IDbConnection закрывается до FillSchema вызова, он открывается для получения данных, а затем закрывается. Если подключение открыто до FillSchema вызова, оно остается открытым.

Примечание

При обработке пакетных инструкций SQL, возвращающих несколько результатов, реализация FillSchema для поставщика данных платформа .NET Framework для OLE DB получает сведения о схеме только для первого результата. Чтобы получить сведения о схеме для нескольких результатов, используйте Fill с заданным значением MissingSchemaActionAddWithKey.

При использовании метода FillSchema поставщик данных .NET Framework для SQL Server добавляет предложение FOR BROWSE к выполняемому оператору. Пользователь должен быть осведомлен о возможных побочных эффектах, например о проблемах, возникающих при использовании операторов SET FMTONLY ON. Дополнительные сведения см. в разделе SET FMTONLY (Transact-SQL).

См. также раздел

Применяется к

FillSchema(DataTable, SchemaType)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Настраивает схему указанного объекта DataTable на основе указанного SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Параметры

dataTable
DataTable

Объект DataTable для заполнения схемой из источника данных.

schemaType
SchemaType

Одно из значений перечисления SchemaType.

Возвращаемое значение

Объект DataTable, содержащий сведения о схеме, возвращенные из источника данных.

Примеры

В следующем примере используется производный класс SqlDataAdapter, для заполнения DataSet схемы и возвращает .DataTable

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

Комментарии

Метод FillSchema извлекает схему из источника данных с помощью SelectCommand. Объект соединения, связанный с , должен быть допустимым SelectCommand , но не должен быть открыт. Если соединение закрывается до FillSchema вызова, оно открывается для получения данных, а затем закрывается. Если подключение открыто до FillSchema вызова, оно остается открытым.

Операция FillSchema возвращает .DataTable Затем он добавляет столбцы в DataColumnCollectionDataTableи настраивает следующие DataColumn свойства, если они существуют в источнике данных:

FillSchema также настраивает PrimaryKey свойства и Constraints в соответствии со следующими правилами:

  • PrimaryKey Если объект уже определен для DataTable, или DataTable содержит данные, PrimaryKey свойство не будет задано.

  • Если один или несколько столбцов первичного SelectCommandключа возвращаются , они используются в качестве столбцов первичного DataTableключа для .

  • Если не возвращаются столбцы первичного ключа, но уникальные столбцы, то уникальные столбцы используются в качестве первичного ключа, если и только в том случае, если все уникальные столбцы не являются возвращаемыми. Если какой-либо из столбцов допускает значение NULL, UniqueConstraint к добавляется ConstraintCollection, но PrimaryKey свойство не задано.

  • Если возвращаются как столбцы первичного ключа, так и уникальные столбцы, столбцы первичного ключа используются в качестве столбцов первичного DataTableключа для .

Обратите внимание, что первичные ключи и ограничения уникальности добавляются в ConstraintCollection в соответствии с предыдущими правилами, но другие типы ограничений не добавляются. Для этого процесса может потребоваться несколько круговых путей к серверу.

Если уникальный кластеризованный индекс определен в столбце или столбцах в таблице SQL Server, а ограничение первичного ключа определено в отдельном наборе столбцов, будут возвращены имена столбцов в кластеризованном индексе. Чтобы вернуть имя или имена столбцов первичного ключа, используйте указание запроса с инструкцией SELECT, указывающей имя индекса первичного ключа. Дополнительные сведения об указании запросов см. в разделе Подсказки (Transact-SQL) — запрос.

DbDataAdapter Если при заполнении столбца встречаются повторяющиеся DataTableстолбцы, он создает имена для последующих столбцов с использованием шаблонов columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet по шаблону Column1, Column2 и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "Table1", "Table2" и т. д.). Если приложение использует имена столбцов и таблиц, убедитесь в отсутствии конфликтов с этими шаблонами именования.

FillSchema не возвращает строки. Используйте метод для Fill добавления строк в DataTableобъект .

Примечание

При обработке пакетных инструкций SQL, возвращающих несколько результатов, реализация FillSchema для поставщика данных платформа .NET Framework для OLE DB получает сведения о схеме только для первого результата. Чтобы получить сведения о схеме для нескольких результатов, используйте Fill с заданным значением MissingSchemaActionAddWithKey.

При использовании метода FillSchema поставщик данных .NET Framework для SQL Server добавляет предложение FOR BROWSE к выполняемому оператору. Пользователь должен быть осведомлен о возможных побочных эффектах, например о проблемах, возникающих при использовании операторов SET FMTONLY ON. Дополнительные сведения см. в разделе SET FMTONLY (Transact-SQL).

См. также раздел

Применяется к

FillSchema(DataSet, SchemaType)

Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs
Исходный код:
DbDataAdapter.cs

Добавляет объект DataTable с именем Table в указанный объект DataSet и настраивает схему для соответствия этому объекту в источнике данных на основе указанного значения типа SchemaType.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Параметры

dataSet
DataSet

Объект DataSet, куда вставляется схема.

schemaType
SchemaType

Одно из значений SchemaType, указывающее, как следует вставлять схему.

Возвращаемое значение

Ссылка на коллекцию объектов DataTable, которые были добавлены в DataSet.

Реализации

Примеры

В следующем примере используется производный класс SqlDataAdapter, для заполнения DataSet схемы и возвращает .DataSet

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Комментарии

Этот метод извлекает сведения о схеме из источника данных с помощью SelectCommand.

Операция FillSchema добавляет к целевому DataTableDataSetобъекту . Затем он добавляет столбцы в DataColumnCollectionDataTableи настраивает следующие DataColumn свойства, если они существуют в источнике данных:

FillSchema также настраивает PrimaryKey свойства и Constraints в соответствии со следующими правилами:

  • Если один или несколько столбцов первичного SelectCommandключа возвращаются , они используются в качестве столбцов первичного DataTableключа для .

  • Если не возвращаются столбцы первичного ключа, но уникальные столбцы, то уникальные столбцы используются в качестве первичного ключа, если и только в том случае, если все уникальные столбцы не являются возвращаемыми. Если какой-либо из столбцов допускает значение NULL, UniqueConstraint к добавляется ConstraintCollection, но PrimaryKey свойство не задано.

  • Если возвращаются как столбцы первичного ключа, так и уникальные столбцы, столбцы первичного ключа используются в качестве столбцов первичного DataTableключа для .

Обратите внимание, что первичные ключи и ограничения уникальности добавляются в ConstraintCollection в соответствии с предыдущими правилами, но другие типы ограничений не добавляются.

Если уникальный кластеризованный индекс определен в столбце или столбцах в таблице SQL Server, а ограничение первичного ключа определено в отдельном наборе столбцов, будут возвращены имена столбцов в кластеризованном индексе. Чтобы вернуть имя или имена столбцов первичного ключа, используйте указание запроса с инструкцией SELECT, указывающей имя индекса первичного ключа. Дополнительные сведения об указании запросов см. в разделе Подсказки (Transact-SQL) — запрос.

Сведения о первичном ключе используются во время Fill поиска и замены строк, ключевых столбцов которых совпадают. Если это не является требуемым поведением, используйте Fill без запроса сведений о схеме.

IDataAdapter Если при заполнении столбца встречаются повторяющиеся DataTableстолбцы, он создает имена для последующих столбцов с использованием шаблонов columnname1, columnname2, columnname3 и т. д. Если входящие данные содержат неименованные столбцы, они помещаются в DataSet по шаблону Column1, Column2 и т. д. При добавлении нескольких результирующих наборов в DataSet каждый результирующий набор помещается в отдельную таблицу. Дополнительные результирующие наборы именуются путем добавления целочисленных значений к указанному имени таблицы (например, "Table", "Table1", "Table2" и т. д.). Если приложение использует имена столбцов и таблиц, убедитесь в отсутствии конфликтов с этими шаблонами именования.

Объект IDbConnection , связанный с командой select, должен быть допустимым, но его не нужно открывать. Если объект IDbConnection закрывается до FillSchema вызова, он открывается для получения данных, а затем закрывается. Если подключение открыто до FillSchema вызова, оно остается открытым.

Примечание

При обработке пакетных инструкций SQL, возвращающих несколько результатов, реализация FillSchema для поставщика данных платформа .NET Framework для OLE DB получает сведения о схеме только для первого результата. Чтобы получить сведения о схеме для нескольких результатов, используйте Fill с заданным значением MissingSchemaActionAddWithKey.

При использовании метода FillSchema поставщик данных .NET Framework для SQL Server добавляет предложение FOR BROWSE к выполняемому оператору. Пользователь должен быть осведомлен о возможных побочных эффектах, например о проблемах, возникающих при использовании операторов SET FMTONLY ON. Дополнительные сведения см. в разделе SET FMTONLY (Transact-SQL).

См. также раздел

Применяется к