Sdílet prostřednictvím


DbDataAdapter.FillSchema Metoda

Definice

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

Přetížení

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

DataTable Přidá k zadanému 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á k zadanému DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaných SchemaType hodnot a DataTable.

FillSchema(DataTable, SchemaType)

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

FillSchema(DataSet, SchemaType)

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

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

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

DataTable Přidá k zadanému 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);
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()

Parametry

dataSet
DataSet

K DataSet vyplnění schématu 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í tabulky.

behavior
CommandBehavior

Jedna z CommandBehavior hodnot.

Návraty

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

Poznámky

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

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

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

  • Pokud je jedním nebo více sloupci primárního klíče vráceno , SelectCommandpoužijí se jako sloupce primárního klíče pro DataTable.

  • Pokud se nevrátí žádné sloupce s primárním klíčem, ale jedinečné sloupce ano, jedinečné sloupce se použijí jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nelze zrušit. Pokud je některý ze sloupců s možnou hodnotou null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavená.

  • 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 DataTable.

Všimněte si, že primární klíče a jedinečná omezení se přidají do ConstraintCollection nástroje podle předchozích pravidel, ale jiné typy omezení se nepřidávají.

Pokud je ve sloupci nebo sloupcích v SQL Server tabulce definovaný jedinečný clusterovaný index a omezení primárního klíče je definováno pro samostatnou sadu 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 dotazu najdete v tématu Nápovědy (Transact-SQL) – dotaz.

Pokud při IDataAdapter vyplňování DataTablenarazí na duplicitní sloupce, vygeneruje názvy pro následující sloupce pomocí vzoru "název_sloupce1", "název_sloupce2", "název_sloupce3" atd. Pokud příchozí data obsahují nepojmenované sloupce, umisťují DataSet se do sloupců podle vzoru "Column1", "Column2" atd. Při přidání více sad výsledků dotazu se DataSet každá sada výsledků dotazu umístí 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 s těmito vzory vytváření názvů nedochází ke konfliktům.

Metoda FillSchema podporuje scénáře, kdy DataSet objekt obsahuje více DataTable objektů, jejichž názvy se liší pouze velikostí písmen. V takových situacích FillSchema nástroj provede porovnání s rozlišováním velkých a malých písmen a vyhledá odpovídající tabulku, a pokud neexistuje přesná shoda, vytvoří novou tabulku. 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 velikostí písmen, DataTable aktualizuje se. V tomto scénáři se při porovnání nerozlišují malá a velká 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 objektu DataTable.

Poznámka

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

Při použití příkazu FillSchemapřipojí zprostředkovatel dat rozhraní .NET Framework pro SQL Server klauzuli FOR BROWSE ke spuštěného příkazu. Uživatel by si měl být vědom možných vedlejších účinků, jako je například interference s použitím příkazů SET FMTONLY ON. Další informace najdete v tématu SET FMTONLY (Transact-SQL).

Poznámky pro dědice

Tato implementace FillSchema(DataSet, SchemaType) metody je chráněna a je určena pro použití zprostředkovatelem dat rozhraní .NET Framework.

Viz také

Platí pro

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

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);
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

Parametry

dataTable
DataTable

K DataTable vyplnění schématu 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

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

Poznámky

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

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

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

  • Pokud je jedním nebo více sloupci primárního klíče vráceno , SelectCommandpoužijí se jako sloupce primárního klíče pro DataTable.

  • Pokud se nevrátí žádné sloupce s primárním klíčem, ale jedinečné sloupce ano, jedinečné sloupce se použijí jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nelze zrušit. Pokud je některý ze sloupců s možnou hodnotou null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavená.

  • 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 DataTable.

Všimněte si, že primární klíče a jedinečná omezení se přidají do ConstraintCollection nástroje podle předchozích pravidel, ale jiné typy omezení se nepřidávají.

Pokud je ve sloupci nebo sloupcích v SQL Server tabulce definovaný jedinečný clusterovaný index a omezení primárního klíče je definováno pro samostatnou sadu 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 dotazu najdete v tématu Nápovědy (Transact-SQL) – dotaz.

Pokud při IDataAdapter vyplňování DataTablenarazí na duplicitní sloupce, vygeneruje názvy pro následující sloupce pomocí vzoru "název_sloupce1", "název_sloupce2", "název_sloupce3" atd. Pokud příchozí data obsahují nepojmenované sloupce, umisťují DataSet se do sloupců podle vzoru "Column1", "Column2" atd. Při přidání více sad výsledků dotazu se DataSet každá sada výsledků dotazu umístí 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 s těmito vzory vytváření názvů nedochází ke konfliktům.

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

Poznámka

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

Při použití příkazu FillSchemapřipojí zprostředkovatel dat rozhraní .NET Framework pro SQL Server klauzuli FOR BROWSE ke spuštěného příkazu. Uživatel by si měl být vědom možných vedlejších účinků, jako je například interference s použitím příkazů SET FMTONLY ON. Další informace najdete v tématu SET FMTONLY (Transact-SQL).

Poznámky pro dědice

Tato implementace FillSchema(DataSet, SchemaType) metody je chráněna a je určena pro použití zprostředkovatelem dat rozhraní .NET Framework.

Viz také

Platí pro

FillSchema(DataSet, SchemaType, String)

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

DataTable Přidá k zadanému DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaných SchemaType hodnot a 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()

Parametry

dataSet
DataSet

A DataSet , do které vložíte schéma.

schemaType
SchemaType

Jedna z SchemaType hodnot, které určují způsob vložení schématu.

srcTable
String

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

Návraty

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

Výjimky

Zdrojová tabulka, ze které chcete získat schéma, nebyla nalezena.

Příklady

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

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

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

  • Pokud je jedním nebo více sloupci primárního klíče vráceno , SelectCommandpoužijí se jako sloupce primárního klíče pro DataTable.

  • Pokud se nevrátí žádné sloupce s primárním klíčem, ale jedinečné sloupce ano, jedinečné sloupce se použijí jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nelze zrušit. Pokud je některý ze sloupců s možnou hodnotou null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavená.

  • 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 DataTable.

Všimněte si, že primární klíče a jedinečná omezení se přidají do ConstraintCollection nástroje podle předchozích pravidel, ale jiné typy omezení se nepřidávají.

Pokud je ve sloupci nebo sloupcích v SQL Server tabulce definovaný jedinečný clusterovaný index a omezení primárního klíče je definováno pro samostatnou sadu 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 dotazu najdete v tématu Nápovědy (Transact-SQL) – dotaz.

Informace o primárním klíči se používají při Fill hledání a nahrazování všech řádků, jejichž klíčové sloupce se shodují. Pokud se nejedná o požadované chování, použijte bez Fill vyžádání informací o schématu.

Pokud při DbDataAdapter vyplňování DataTablenarazí na duplicitní sloupce, vygeneruje názvy pro následující sloupce pomocí vzoru "název_sloupce1", "název_sloupce2", "název_sloupce3" atd. Pokud příchozí data obsahují nepojmenované sloupce, umisťují DataSet se do sloupců podle vzoru "Column1", "Column2" atd. Při přidání více sad výsledků dotazu se DataSet každá sada výsledků dotazu umístí 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 s těmito vzory vytváření názvů nedochází ke konfliktům.

Metoda FillSchema podporuje scénáře, kdy DataSet objekt obsahuje více DataTable objektů, jejichž názvy se liší pouze velikostí písmen. V takových situacích FillSchema nástroj provede porovnání s rozlišováním velkých a malých písmen a vyhledá odpovídající tabulku, a pokud neexistuje přesná shoda, vytvoří novou tabulku. 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 velikostí písmen, DataTable aktualizuje se. V tomto scénáři se při porovnání nerozlišují malá a velká 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.  

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

Poznámka

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

Při použití příkazu FillSchemapřipojí zprostředkovatel dat rozhraní .NET Framework pro SQL Server klauzuli FOR BROWSE ke spuštěného příkazu. Uživatel by si měl být vědom možných vedlejších účinků, jako je například interference s použitím příkazů SET FMTONLY ON. Další informace najdete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro

FillSchema(DataTable, SchemaType)

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

Nakonfiguruje schéma zadaného DataTable na základě zadaného 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

Parametry

dataTable
DataTable

K DataTable vyplnění schématu ze zdroje dat.

schemaType
SchemaType

Jedna z SchemaType hodnot.

Návraty

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

Příklady

Následující příklad používá odvozenou třídu , SqlDataAdapter, k vyplnění DataSet objektu schématem a vrátí 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 objektu SelectCommand musí být platný, ale nemusí být otevřený. Pokud se připojení před FillSchema zavolání ukončí, otevře se za účelem načtení dat a pak se ukončí. Pokud je připojení před FillSchema zavolání otevřené, zůstane otevřené.

Operace FillSchema vrátí .DataTable Pak přidá sloupce do objektu DataColumnCollectionDataTablea nakonfiguruje následující DataColumn vlastnosti, pokud existují ve zdroji dat:

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

  • PrimaryKey Pokud již byla definována pro DataTableobjekt nebo DataTable obsahuje data, PrimaryKey vlastnost se nenastaví.

  • Pokud je jedním nebo více sloupci primárního klíče vráceno , SelectCommandpoužijí se jako sloupce primárního klíče pro DataTable.

  • Pokud se nevrátí žádné sloupce s primárním klíčem, ale jedinečné sloupce ano, jedinečné sloupce se použijí jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nelze zrušit. Pokud je některý ze sloupců s možnou hodnotou null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavená.

  • 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 DataTable.

Všimněte si, že primární klíče a jedinečná omezení se přidají do ConstraintCollection nástroje podle předchozích pravidel, ale jiné typy omezení se nepřidávají. Tento proces může vyžadovat několik odezvy na server.

Pokud je ve sloupci nebo sloupcích v SQL Server tabulce definovaný jedinečný clusterovaný index a omezení primárního klíče je definováno pro samostatnou sadu 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 dotazu najdete v tématu Nápovědy (Transact-SQL) – dotaz.

Pokud při DbDataAdapter vyplňování DataTablenarazí na duplicitní sloupce, vygeneruje názvy pro následující sloupce pomocí vzoru "název_sloupce1", "název_sloupce2", "název_sloupce3" atd. Pokud příchozí data obsahují nepojmenované sloupce, umisťují DataSet se do sloupců podle vzoru "Column1", "Column2" atd. Při přidání více sad výsledků dotazu se DataSet každá sada výsledků dotazu umístí 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 s těmito vzory vytváření názvů nedochází ke konfliktům.

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

Poznámka

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

Při použití příkazu FillSchemapřipojí zprostředkovatel dat rozhraní .NET Framework pro SQL Server klauzuli FOR BROWSE ke spuštěného příkazu. Uživatel by si měl být vědom možných vedlejších účinků, jako je například interference s použitím příkazů SET FMTONLY ON. Další informace najdete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro

FillSchema(DataSet, SchemaType)

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

Přidá pojmenovanou DataTable "tabulku" k zadanému DataSet a nakonfiguruje schéma tak, aby odpovídalo schématu ve zdroji dat na základě zadaného 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()

Parametry

dataSet
DataSet

A DataSet , do které vložíte schéma.

schemaType
SchemaType

Jedna z SchemaType hodnot, které určují způsob vložení schématu.

Návraty

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

Implementuje

Příklady

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

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

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

  • Pokud je jedním nebo více sloupci primárního klíče vráceno , SelectCommandpoužijí se jako sloupce primárního klíče pro DataTable.

  • Pokud se nevrátí žádné sloupce s primárním klíčem, ale jedinečné sloupce ano, jedinečné sloupce se použijí jako primární klíč, pokud a pouze v případě, že všechny jedinečné sloupce nelze zrušit. Pokud je některý ze sloupců s možnou hodnotou null, UniqueConstraint přidá se do objektu ConstraintCollection, ale PrimaryKey vlastnost není nastavená.

  • 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 DataTable.

Všimněte si, že primární klíče a jedinečná omezení se přidají do ConstraintCollection nástroje podle předchozích pravidel, ale jiné typy omezení se nepřidávají.

Pokud je ve sloupci nebo sloupcích v SQL Server tabulce definovaný jedinečný clusterovaný index a omezení primárního klíče je definováno pro samostatnou sadu 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 dotazu najdete v tématu Nápovědy (Transact-SQL) – dotaz.

Informace o primárním klíči se používají při Fill hledání a nahrazování všech řádků, jejichž klíčové sloupce se shodují. Pokud se nejedná o požadované chování, použijte bez Fill vyžádání informací o schématu.

Pokud při IDataAdapter vyplňování DataTablenarazí na duplicitní sloupce, vygeneruje názvy pro následující sloupce pomocí vzoru "název_sloupce1", "název_sloupce2", "název_sloupce3" atd. Pokud příchozí data obsahují nepojmenované sloupce, umisťují DataSet se do sloupců podle vzoru "Column1", "Column2" atd. Při přidání více sad výsledků dotazu se DataSet každá sada výsledků dotazu umístí 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 s těmito vzory vytváření názvů nedochází ke konfliktům.

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

Poznámka

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

Při použití příkazu FillSchemapřipojí zprostředkovatel dat rozhraní .NET Framework pro SQL Server klauzuli FOR BROWSE ke spuštěného příkazu. Uživatel by si měl být vědom možných vedlejších účinků, jako je například interference s použitím příkazů SET FMTONLY ON. Další informace najdete v tématu SET FMTONLY (Transact-SQL).

Viz také

Platí pro