Sdílet prostřednictvím


DbDataAdapter.FillSchema Metoda

Definice

DataTable Přidá do a DataSet nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat.

Přetížení

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

DataTable Přidá do zadaného DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Nakonfiguruje schéma zadaného DataTable na základě zadaného SchemaTypeřetězce příkazu a CommandBehavior hodnot.

FillSchema(DataSet, SchemaType, String)

DataTable Přidá do zadaného DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného SchemaType a DataTable.

FillSchema(DataTable, SchemaType)

Konfiguruje schéma zadaného DataTable na základě zadaného SchemaType.

FillSchema(DataSet, SchemaType)

Přidá do zadaného pole pojmenovanou DataTable tabulku a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného SchemaType.DataSet

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

Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs

DataTable Přidá do zadaného DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
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()

Parametry

dataSet
DataSet

Schéma DataSet se vyplní ze zdroje dat.

schemaType
SchemaType

Jedna z SchemaType hodnot.

command
IDbCommand

Příkaz SQL SELECT použitý k načtení řádků ze zdroje dat.

srcTable
String

Název zdrojové tabulky, která se má použít pro mapování tabulek.

behavior
CommandBehavior

Jedna z CommandBehavior hodnot.

Návraty

Pole DataTable objektů, které obsahují informace o schématu vrácené ze zdroje dat.

Atributy

Poznámky

Metoda FillSchema načte schéma ze zdroje dat pomocí .SelectCommand Objekt připojení přidružený k sadě SelectCommand musí být platný, ale nemusí být otevřený. Pokud je připojení před zavolání zavřené FillSchema , otevře se pro načtení dat a zavře se. Pokud je připojení otevřené před FillSchema zavolání, zůstane otevřené.

FillSchema Operace přidá DataTable do cíle DataSet. Potom přidá sloupce do DataColumnCollection objektu DataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:

  • Pokud jeden nebo více sloupců primárního klíče je vráceno SelectCommand, jsou použity jako sloupce primárního klíče pro .DataTable

  • Pokud se nevrátí žádné sloupce primárního klíče, ale jedinečné sloupce jsou, použijí se jedinečné sloupce jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nejsou nenulovatelné. Pokud některý ze sloupců má hodnotu null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavena.

  • Pokud se vrátí sloupce primárního klíče i jedinečné sloupce, sloupce primárního klíče se použijí jako sloupce primárního klíče pro sloupec DataTable.

Všimněte si, že primární klíče a jedinečná omezení jsou přidány do ConstraintCollection souladu s předchozími pravidly, ale jiné typy omezení nejsou přidány.

Pokud je jedinečný clusterovaný index definován ve sloupci nebo sloupcích v tabulce SQL Serveru a omezení primárního klíče je definováno v samostatné sadě sloupců, vrátí se názvy sloupců v clusterovém indexu. Pokud chcete vrátit název nebo názvy sloupců primárního klíče, použijte nápovědu dotazu s příkazem SELECT, který určuje název indexu primárního klíče. Další informace o zadávání nápovědy k dotazům najdete v tématu Rady (Transact-SQL) – Dotaz.

Pokud dojde k duplicitním sloupcům při naplnění DataTable, vygeneruje názvy pro následující sloupce pomocí vzoru "columnname1", "columnname2", "columnname3" atd.IDataAdapter Pokud příchozí data obsahují nepojmenované sloupce, umístí se do DataSet vzoru Column1, Column2 atd. Když do DataSet každé sady výsledků přidáte více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků jsou pojmenovány připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Pokud vaše aplikace používá názvy sloupců a tabulek, ujistěte se, že nejsou žádné konflikty s těmito vzory pojmenování.

Metoda FillSchema podporuje scénáře, kdy DataSet obsahuje více DataTable objektů, jejichž názvy se liší pouze v případě. Vtakovýchch FillSchema Toto chování ilustruje následující kód jazyka 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".

Pokud FillSchema je volána a DataSet obsahuje pouze jeden DataTable , jehož název se liší pouze v případě, že DataTable se aktualizuje. V tomto scénáři je porovnání nerozlišující velká a malá písmena. Toto chování ilustruje následující kód jazyka 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 nevrací žádné řádky. Fill Pomocí metody přidejte řádky do .DataTable

Poznámka:

Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace FillSchema zprostředkovatele dat rozhraní .NET Framework pro OLE DB načte informace o schématu pouze pro první výsledek. Chcete-li načíst informace o schématu pro více výsledků, použijte Fill s nastavenou na MissingSchemaActionAddWithKeyhodnotu .

Při použití FillSchemarozhraní .NET Framework Data Provider pro SQL Server připojí klauzuli FOR BROWSE k příkazu, který se spouští. Uživatel by měl vědět o potenciálních vedlejších účinků, jako je interference s použitím příkazů SET FMTONLY ON. Další informace naleznete v tématu SET FMTONLY (Transact-SQL).

Poznámky pro dědice

Tato implementace FillSchema(DataSet, SchemaType) metody je chráněna a je navržena pro použití poskytovatelem dat rozhraní .NET Framework.

Viz také

Platí pro

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs

Nakonfiguruje schéma zadaného DataTable na základě zadaného SchemaTypeřetězce příkazu a CommandBehavior hodnot.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
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

Parametry

dataTable
DataTable

Schéma DataTable se vyplní ze zdroje dat.

schemaType
SchemaType

Jedna z SchemaType hodnot.

command
IDbCommand

Příkaz SQL SELECT použitý k načtení řádků ze zdroje dat.

behavior
CommandBehavior

Jedna z CommandBehavior hodnot.

Návraty

DataTable Objekt, který obsahuje informace o schématu vrácené ze zdroje dat.

Atributy

Poznámky

Metoda FillSchema načte schéma ze zdroje dat pomocí .SelectCommand Objekt připojení přidružený k sadě SelectCommand musí být platný, ale nemusí být otevřený. Pokud je připojení před zavolání zavřené FillSchema , otevře se pro načtení dat a zavře se. Pokud je připojení otevřené před FillSchema zavolání, zůstane otevřené.

FillSchema Operace přidá DataTable do cíle DataSet. Potom přidá sloupce do DataColumnCollection objektu DataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:

  • Pokud jeden nebo více sloupců primárního klíče je vráceno SelectCommand, jsou použity jako sloupce primárního klíče pro .DataTable

  • Pokud se nevrátí žádné sloupce primárního klíče, ale jedinečné sloupce jsou, použijí se jedinečné sloupce jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nejsou nenulovatelné. Pokud některý ze sloupců má hodnotu null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavena.

  • Pokud se vrátí sloupce primárního klíče i jedinečné sloupce, sloupce primárního klíče se použijí jako sloupce primárního klíče pro sloupec DataTable.

Všimněte si, že primární klíče a jedinečná omezení jsou přidány do ConstraintCollection souladu s předchozími pravidly, ale jiné typy omezení nejsou přidány.

Pokud je jedinečný clusterovaný index definován ve sloupci nebo sloupcích v tabulce SQL Serveru a omezení primárního klíče je definováno v samostatné sadě sloupců, vrátí se názvy sloupců v clusterovém indexu. Pokud chcete vrátit název nebo názvy sloupců primárního klíče, použijte nápovědu dotazu s příkazem SELECT, který určuje název indexu primárního klíče. Další informace o zadávání nápovědy k dotazům najdete v tématu Rady (Transact-SQL) – Dotaz.

Pokud dojde k duplicitním sloupcům při naplnění DataTable, vygeneruje názvy pro následující sloupce pomocí vzoru "columnname1", "columnname2", "columnname3" atd.IDataAdapter Pokud příchozí data obsahují nepojmenované sloupce, umístí se do DataSet vzoru Column1, Column2 atd. Když do DataSet každé sady výsledků přidáte více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků jsou pojmenovány připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Pokud vaše aplikace používá názvy sloupců a tabulek, ujistěte se, že nejsou žádné konflikty s těmito vzory pojmenování.

FillSchema nevrací žádné řádky. Fill Pomocí metody přidejte řádky do .DataTable

Poznámka:

Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace FillSchema zprostředkovatele dat rozhraní .NET Framework pro OLE DB načte informace o schématu pouze pro první výsledek. Chcete-li načíst informace o schématu pro více výsledků, použijte Fill s nastavenou na MissingSchemaActionAddWithKeyhodnotu .

Při použití FillSchemarozhraní .NET Framework Data Provider pro SQL Server připojí klauzuli FOR BROWSE k příkazu, který se spouští. Uživatel by měl vědět o potenciálních vedlejších účinků, jako je interference s použitím příkazů SET FMTONLY ON. Další informace naleznete v tématu SET FMTONLY (Transact-SQL).

Poznámky pro dědice

Tato implementace FillSchema(DataSet, SchemaType) metody je chráněna a je navržena pro použití poskytovatelem dat rozhraní .NET Framework.

Viz také

Platí pro

FillSchema(DataSet, SchemaType, String)

Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs

DataTable Přidá do zadaného DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného SchemaType a DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
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()

Parametry

dataSet
DataSet

A DataSet pro vložení schématu.

schemaType
SchemaType

Jedna z SchemaType hodnot, které určují, jak vložit schéma.

srcTable
String

Název zdrojové tabulky, která se má použít pro mapování tabulek.

Návraty

Odkaz na kolekci DataTable objektů, které byly přidány do objektu DataSet.

Atributy

Výjimky

Zdrojovou tabulku, ze které se má získat schéma, nenašel.

Příklady

Následující příklad používá odvozenou třídu , SqlDataAdapter, k vyplnění schématu DataSet a vrací 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

Poznámky

Tato metoda načte informace o schématu ze zdroje dat pomocí metody SelectCommand.

FillSchema Operace přidá DataTable do cíle DataSet. Potom přidá sloupce do DataColumnCollection objektu DataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:

  • Pokud jeden nebo více sloupců primárního klíče je vráceno SelectCommand, jsou použity jako sloupce primárního klíče pro .DataTable

  • Pokud se nevrátí žádné sloupce primárního klíče, ale jedinečné sloupce jsou, použijí se jedinečné sloupce jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nejsou nenulovatelné. Pokud některý ze sloupců má hodnotu null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavena.

  • Pokud se vrátí sloupce primárního klíče i jedinečné sloupce, sloupce primárního klíče se použijí jako sloupce primárního klíče pro sloupec DataTable.

Všimněte si, že primární klíče a jedinečná omezení jsou přidány do ConstraintCollection souladu s předchozími pravidly, ale jiné typy omezení nejsou přidány.

Pokud je jedinečný clusterovaný index definován ve sloupci nebo sloupcích v tabulce SQL Serveru a omezení primárního klíče je definováno v samostatné sadě sloupců, vrátí se názvy sloupců v clusterovém indexu. Pokud chcete vrátit název nebo názvy sloupců primárního klíče, použijte nápovědu dotazu s příkazem SELECT, který určuje název indexu primárního klíče. Další informace o zadávání nápovědy k dotazům najdete v tématu Rady (Transact-SQL) – Dotaz.

Informace o primárním klíči slouží k Fill vyhledání a nahrazení všech řádků, jejichž klíčové sloupce odpovídají. Pokud se nejedná o požadované chování, použijte Fill bez vyžádání informací o schématu.

Pokud dojde k duplicitním sloupcům při naplnění DataTable, vygeneruje názvy pro následující sloupce pomocí vzoru "columnname1", "columnname2", "columnname3" atd.DbDataAdapter Pokud příchozí data obsahují nepojmenované sloupce, umístí se do DataSet vzoru Column1, Column2 atd. Když do DataSet každé sady výsledků přidáte více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků jsou pojmenovány připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Pokud vaše aplikace používá názvy sloupců a tabulek, ujistěte se, že nejsou žádné konflikty s těmito vzory pojmenování.

Metoda FillSchema podporuje scénáře, kdy DataSet obsahuje více DataTable objektů, jejichž názvy se liší pouze v případě. Vtakovýchch FillSchema Toto chování ilustruje následující kód jazyka 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".

Pokud FillSchema je volána a DataSet obsahuje pouze jeden DataTable , jehož název se liší pouze v případě, že DataTable se aktualizuje. V tomto scénáři je porovnání nerozlišující velká a malá písmena. Toto chování ilustruje následující kód jazyka 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 Objekt přidružený k příkazu select musí být platný, ale nemusí se otevřít. IDbConnection Pokud je před zavolání zavřenýFillSchema, otevře se pro načtení dat a zavře se. Pokud je připojení otevřené před FillSchema zavolání, zůstane otevřené.

Poznámka:

Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace FillSchema zprostředkovatele dat rozhraní .NET Framework pro OLE DB načte informace o schématu pouze pro první výsledek. Chcete-li načíst informace o schématu pro více výsledků, použijte Fill s nastavenou na MissingSchemaActionAddWithKeyhodnotu .

Při použití FillSchemarozhraní .NET Framework Data Provider pro SQL Server připojí klauzuli FOR BROWSE k příkazu, který se spouští. Uživatel by měl vědět o potenciálních vedlejších účinků, jako je interference s použitím příkazů SET FMTONLY ON. Další informace naleznete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro

FillSchema(DataTable, SchemaType)

Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs

Konfiguruje schéma zadaného DataTable na základě zadaného SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Parametry

dataTable
DataTable

Schéma DataTable se vyplní ze zdroje dat.

schemaType
SchemaType

Jedna z SchemaType hodnot.

Návraty

A DataTable obsahující informace o schématu vrácené ze zdroje dat.

Atributy

Příklady

Následující příklad používá odvozenou třídu , SqlDataAdapter, k vyplnění schématu DataSet a vrací 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

Poznámky

Metoda FillSchema načte schéma ze zdroje dat pomocí .SelectCommand Objekt připojení přidružený k sadě SelectCommand musí být platný, ale nemusí být otevřený. Pokud je připojení před zavolání zavřené FillSchema , otevře se pro načtení dat a zavře se. Pokud je připojení otevřené před FillSchema zavolání, zůstane otevřené.

Operace FillSchema vrátí DataTablehodnotu . Potom přidá sloupce do DataColumnCollection objektu DataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:

  • Pokud již byla definována PrimaryKey pro DataTable, nebo DataTable obsahuje data, PrimaryKey vlastnost nebude nastavena.

  • Pokud jeden nebo více sloupců primárního klíče je vráceno SelectCommand, jsou použity jako sloupce primárního klíče pro .DataTable

  • Pokud se nevrátí žádné sloupce primárního klíče, ale jedinečné sloupce jsou, použijí se jedinečné sloupce jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nejsou nenulovatelné. Pokud některý ze sloupců má hodnotu null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavena.

  • Pokud se vrátí sloupce primárního klíče i jedinečné sloupce, sloupce primárního klíče se použijí jako sloupce primárního klíče pro sloupec DataTable.

Všimněte si, že primární klíče a jedinečná omezení jsou přidány do ConstraintCollection souladu s předchozími pravidly, ale jiné typy omezení nejsou přidány. Tento proces může vyžadovat několik odezv na server.

Pokud je jedinečný clusterovaný index definován ve sloupci nebo sloupcích v tabulce SQL Serveru a omezení primárního klíče je definováno v samostatné sadě sloupců, vrátí se názvy sloupců v clusterovém indexu. Pokud chcete vrátit název nebo názvy sloupců primárního klíče, použijte nápovědu dotazu s příkazem SELECT, který určuje název indexu primárního klíče. Další informace o zadávání nápovědy k dotazům najdete v tématu Rady (Transact-SQL) – Dotaz.

Pokud dojde k duplicitním sloupcům při naplnění DataTable, vygeneruje názvy pro následující sloupce pomocí vzoru "columnname1", "columnname2", "columnname3" atd.DbDataAdapter Pokud příchozí data obsahují nepojmenované sloupce, umístí se do DataSet vzoru Column1, Column2 atd. Když do DataSet každé sady výsledků přidáte více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků jsou pojmenovány připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Pokud vaše aplikace používá názvy sloupců a tabulek, ujistěte se, že nejsou žádné konflikty s těmito vzory pojmenování.

FillSchema nevrací žádné řádky. Fill Pomocí metody přidejte řádky do .DataTable

Poznámka:

Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace FillSchema zprostředkovatele dat rozhraní .NET Framework pro OLE DB načte informace o schématu pouze pro první výsledek. Chcete-li načíst informace o schématu pro více výsledků, použijte Fill s nastavenou na MissingSchemaActionAddWithKeyhodnotu .

Při použití FillSchemarozhraní .NET Framework Data Provider pro SQL Server připojí klauzuli FOR BROWSE k příkazu, který se spouští. Uživatel by měl vědět o potenciálních vedlejších účinků, jako je interference s použitím příkazů SET FMTONLY ON. Další informace naleznete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro

FillSchema(DataSet, SchemaType)

Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs
Zdroj:
DbDataAdapter.cs

Přidá do zadaného pole pojmenovanou DataTable tabulku a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného SchemaType.DataSet

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Parametry

dataSet
DataSet

A DataSet pro vložení schématu.

schemaType
SchemaType

Jedna z SchemaType hodnot, které určují, jak vložit schéma.

Návraty

Odkaz na kolekci DataTable objektů, které byly přidány do objektu DataSet.

Implementuje

Atributy

Příklady

Následující příklad používá odvozenou třídu , SqlDataAdapter, k vyplnění schématu DataSet a vrací 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

Poznámky

Tato metoda načte informace o schématu ze zdroje dat pomocí metody SelectCommand.

FillSchema Operace přidá DataTable do cíle DataSet. Potom přidá sloupce do DataColumnCollection objektu DataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:

  • Pokud jeden nebo více sloupců primárního klíče je vráceno SelectCommand, jsou použity jako sloupce primárního klíče pro .DataTable

  • Pokud se nevrátí žádné sloupce primárního klíče, ale jedinečné sloupce jsou, použijí se jedinečné sloupce jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nejsou nenulovatelné. Pokud některý ze sloupců má hodnotu null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavena.

  • Pokud se vrátí sloupce primárního klíče i jedinečné sloupce, sloupce primárního klíče se použijí jako sloupce primárního klíče pro sloupec DataTable.

Všimněte si, že primární klíče a jedinečná omezení jsou přidány do ConstraintCollection souladu s předchozími pravidly, ale jiné typy omezení nejsou přidány.

Pokud je jedinečný clusterovaný index definován ve sloupci nebo sloupcích v tabulce SQL Serveru a omezení primárního klíče je definováno v samostatné sadě sloupců, vrátí se názvy sloupců v clusterovém indexu. Pokud chcete vrátit název nebo názvy sloupců primárního klíče, použijte nápovědu dotazu s příkazem SELECT, který určuje název indexu primárního klíče. Další informace o zadávání nápovědy k dotazům najdete v tématu Rady (Transact-SQL) – Dotaz.

Informace o primárním klíči slouží k Fill vyhledání a nahrazení všech řádků, jejichž klíčové sloupce odpovídají. Pokud se nejedná o požadované chování, použijte Fill bez vyžádání informací o schématu.

Pokud dojde k duplicitním sloupcům při naplnění DataTable, vygeneruje názvy pro následující sloupce pomocí vzoru "columnname1", "columnname2", "columnname3" atd.IDataAdapter Pokud příchozí data obsahují nepojmenované sloupce, umístí se do DataSet vzoru Column1, Column2 atd. Když do DataSet každé sady výsledků přidáte více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků jsou pojmenovány připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Pokud vaše aplikace používá názvy sloupců a tabulek, ujistěte se, že nejsou žádné konflikty s těmito vzory pojmenování.

IDbConnection Objekt přidružený k příkazu select musí být platný, ale nemusí se otevřít. IDbConnection Pokud je před zavolání zavřenýFillSchema, otevře se pro načtení dat a zavře se. Pokud je připojení otevřené před FillSchema zavolání, zůstane otevřené.

Poznámka:

Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace FillSchema zprostředkovatele dat rozhraní .NET Framework pro OLE DB načte informace o schématu pouze pro první výsledek. Chcete-li načíst informace o schématu pro více výsledků, použijte Fill s nastavenou na MissingSchemaActionAddWithKeyhodnotu .

Při použití FillSchemarozhraní .NET Framework Data Provider pro SQL Server připojí klauzuli FOR BROWSE k příkazu, který se spouští. Uživatel by měl vědět o potenciálních vedlejších účinků, jako je interference s použitím příkazů SET FMTONLY ON. Další informace naleznete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro