DbDataAdapter.FillSchema Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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:
AutoIncrement. Musíte nastavit AutoIncrementStep a AutoIncrementSeed samostatně.
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
- 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:
AutoIncrement. Musíte nastavit AutoIncrementStep a AutoIncrementSeed samostatně.
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
- 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:
AutoIncrement. Musíte nastavit AutoIncrementStep a AutoIncrementSeed samostatně.
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é
- DbProviderFactories
- Přehled ADO.NET
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
- 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:
AutoIncrement. Musíte nastavit AutoIncrementStep a AutoIncrementSeed samostatně.
FillSchema také nakonfiguruje PrimaryKey vlastnosti a Constraints vlastnosti podle následujících pravidel:
Pokud již byla definována PrimaryKey pro
DataTable, neboDataTableobsahuje data,PrimaryKeyvlastnost 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 .
DataTablePokud 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
PrimaryKeyvlastnost 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é
- DbProviderFactories
- Přehled ADO.NET
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
- 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:
AutoIncrement. Musíte nastavit AutoIncrementStep a AutoIncrementSeed samostatně.
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é
- DbProviderFactories
- Přehled ADO.NET