DbDataAdapter.Fill 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í
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) |
Přidá nebo aktualizuje řádky v zadané oblasti v objektu DataSet tak, aby odpovídaly řádkům ve zdroji dat pomocí DataSet názvů a zdrojových tabulek, řetězce příkazů a chování příkazů. |
Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) |
Přidá nebo aktualizuje řádky v zadané oblasti v objektu DataSet tak, aby odpovídaly řádkům ve zdroji DataSet dat pomocí názvů a DataTable . |
Fill(DataSet, String, IDataReader, Int32, Int32) |
Přidá nebo aktualizuje řádky v zadané oblasti v objektu DataSet tak, aby odpovídaly řádkům ve zdroji dat pomocí DataSetnázvů , DataTablea IDataReader . |
Fill(DataSet, Int32, Int32, String) |
Přidá nebo aktualizuje řádky v zadané oblasti v objektu DataSet tak, aby odpovídaly řádkům ve zdroji DataSet dat pomocí názvů a DataTable . |
Fill(Int32, Int32, DataTable[]) |
Přidá nebo aktualizuje řádky v jednom nebo více DataTable objektech tak, aby odpovídaly řádkům ve zdroji dat počínaje zadaným záznamem a načítáním až do zadaného maximálního počtu záznamů. |
Fill(DataTable) |
Pomocí názvu přidá nebo aktualizuje řádky v zadané oblasti v DataSet poli tak, aby odpovídaly řádkům ve zdroji DataTable dat. |
Fill(DataTable, IDataReader) |
Přidá nebo aktualizuje řádky v objektu tak, DataTable aby odpovídaly řádkům ve zdroji dat pomocí zadaných DataTable názvů a IDataReader názvů. |
Fill(DataSet, String) |
Přidá nebo aktualizuje řádky v objektu tak, DataSet aby odpovídaly řádkům ve zdroji DataSet dat pomocí názvů a DataTable . |
Fill(DataSet) |
Přidá nebo aktualizuje řádky v objektu DataSet. |
Fill(DataTable, IDbCommand, CommandBehavior) |
Přidá nebo aktualizuje řádky v objektu DataTable tak, aby odpovídaly řádkům ve zdroji dat pomocí zadaných DataTablehodnot , IDbCommand a CommandBehavior. |
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
protected:
virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer
Parametry
- startRecord
- Int32
Číslo záznamu založené na nule, na které začnete.
- maxRecords
- Int32
Maximální počet záznamů, které se mají načíst. Zadáním hodnoty 0 načtěte všechny záznamy po zahájení záznamu.
- srcTable
- String
Název zdrojové tabulky, která se má použít pro mapování tabulek.
- command
- IDbCommand
Příkaz SQL SELECT použitý k načtení řádků ze zdroje dat.
- behavior
- CommandBehavior
Jedna z CommandBehavior hodnot.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Výjimky
Zdrojová tabulka je neplatná.
Poznámky
Hodnota maxRecords
0 získá všechny záznamy nalezené po zahájení záznamu. Pokud maxRecords
je větší než počet zbývajících řádků, vrátí se pouze zbývající řádky a nevystaví se žádná chyba.
Metoda Fill načte řádky ze zdroje dat pomocí příkazu SELECT určeného přidruženou SelectCommand vlastností. Objekt připojení přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. Pokud je připojení před Fill zavolání ukončeno, otevře se, aby načetla data, a pak se zavře. Pokud je připojení otevřené před Fill zavolání, zůstane otevřené.
Operace Fill pak přidá řádky do cílových DataTable objektů v objektu DataSeta vytvoří DataTable objekty, pokud ještě neexistují. Při vytváření DataTable objektů Fill operace obvykle vytváří pouze metadata názvu sloupce. Pokud je ale vlastnost nastavená MissingSchemaAction na AddWithKey
, vytvoří se také příslušné primární klíče a omezení.
Pokud při DbDataAdapter naplnění DataTablesloupce narazí 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, umístí se do vzorů DataSet "Sloupec1", "Sloupec2" a tak dále. Když se do DataSet každé sady výsledků přidá více sad výsledků, umístí se do samostatné tabulky. Další sady výsledků se pojmenují tak, že k zadanému názvu tabulky připojíte integrální hodnoty (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 Fill podporuje scénáře, ve kterých DataSet obsahuje více DataTable objektů, jejichž názvy se liší pouze podle písmen. V takových situacích Fill provede porovnání s rozlišováním velkých a malých písmen odpovídající tabulku a vytvoří novou tabulku, pokud neexistuje přesná shoda. Toto chování znázorňuje následující kód jazyka C#.
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
Pokud Fill je volán a DataSet obsahuje pouze jeden DataTable , jehož název se liší pouze písmeny, aktualizuje se DataTable . V tomto scénáři porovnání nerozlišuje velká a velká písmena. Toto chování znázorňuje následující kód jazyka C#.
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Metodu Fill můžete použít vícekrát na stejné DataTable. Pokud existuje primární klíč, příchozí řádky se sloučí s odpovídajícími řádky, které již existují. Pokud neexistuje žádný primární klíč, připojí se k objektu příchozí řádky DataTable.
Pokud vrátí SelectCommand
výsledky vnějšího spojení, DataAdapter
hodnota nenastaví PrimaryKey hodnotu pro výslednou DataTablehodnotu . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
Poznámka
Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace Fill a FillSchema pro zprostředkovatele dat rozhraní .NET Framework načte informace o schématu pouze pro první výsledek.
Poznámky pro dědice
Toto přetížení Fill(DataSet) metody je chráněno a je určeno pro použití zprostředkovatelem dat rozhraní .NET Framework.
Viz také
Platí pro
Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
protected:
virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer
Parametry
- startRecord
- Int32
Číslo záznamu založené na nule, na které začnete.
- maxRecords
- Int32
Maximální počet záznamů, které se mají načíst. Zadáním hodnoty 0 načtěte všechny záznamy po zahájení záznamu.
- command
- IDbCommand
Objekt IDbCommand byl proveden k vyplnění DataTable objektů.
- behavior
- CommandBehavior
Jedna z CommandBehavior hodnot.
Návraty
Počet řádků přidaných nebo aktualizováných v tabulkách dat.
Výjimky
Hodnota DataSet je neplatná.
Připojení nebylo nalezeno.
Poznámky
Hodnota maxRecords
0 získá všechny záznamy nalezené po zahájení záznamu. Pokud maxRecords
je větší než počet zbývajících řádků, vrátí se pouze zbývající řádky a nevystaví se žádná chyba.
Metoda Fill načte data ze zdroje dat pomocí příkazu SELECT. Objekt IDbConnection přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. IDbConnection Pokud je volána hodnota před ukončenímFill, otevře se, aby načetla data, a pak se zavře. Pokud je připojení otevřené před Fill zavolání, zůstane otevřené.
Pokud příkaz nevrací žádné řádky, nebudou do objektu DataSetpřidány žádné tabulky, ale nevyvolá se žádná výjimka.
DbDataAdapter Pokud objekt při naplně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, umístí se do vzorů DataSet "Sloupec1", "Sloupec2" a tak dále.
Když zadaný dotaz vrátí více výsledků, každá sada výsledků se umístí do samostatné tabulky. Další sady výsledků se pojmenují tak, že k zadanému názvu tabulky připojíte integrální hodnoty (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Vzhledem k tomu, že se pro dotaz, který nevrací řádky, nevytvořila žádná tabulka. Pokud byste zpracovali vložený dotaz následovaný výběrovým dotazem, tabulka vytvořená pro výběrový dotaz by měla název Tabulka, protože se jedná o první vytvořenou tabulku. 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 Fill podporuje scénáře, ve kterých DataSet obsahuje více DataTable objektů, jejichž názvy se liší pouze podle písmen. V takových situacích Fill provede porovnání s rozlišováním velkých a malých písmen odpovídající tabulku a vytvoří novou tabulku, pokud neexistuje přesná shoda. Toto chování znázorňuje následující kód jazyka C#.
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
Pokud Fill je volán a DataSet obsahuje pouze jeden DataTable , jehož název se liší pouze písmeny, aktualizuje se DataTable . 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Pokud při naplňování tabulek dat dojde k chybě nebo výjimce, řádky přidané před výskytem chyby zůstanou v tabulkách dat. Zbývající část operace se přeruší.
Pokud příkaz SELECT použitý k naplnění DataTable objektů vrátí více výsledků, například dávkový příkaz SQL, mějte na paměti následující:
Při zpracování více výsledků z dávkového příkazu SQL platí
maxRecords
pouze pro první výsledek. Totéž platí pro řádky obsahující výsledky v kapitolách (Zprostředkovatel dat rozhraní .NET Framework pouze pro OLE DB). Výsledek nejvyšší úrovně je omezený ,maxRecords
ale přidají se všechny podřízené řádky.Pokud jeden z výsledků obsahuje chybu, všechny následné výsledky se přeskočí.
Poznámka
Parametr DataSet
nebude obsahovat více než počet záznamů označených parametrem maxRecords
. Celá sada výsledků vygenerovaná dotazem se ale stále vrátí ze serveru.
Poznámky pro dědice
Při přepsání Fill(DataSet) v odvozené třídě nezapomeňte volat metodu základní třídy Fill(DataSet) .
Viz také
Platí pro
Fill(DataSet, String, IDataReader, Int32, Int32)
Přidá nebo aktualizuje řádky v zadané oblasti v objektu tak DataSet , aby odpovídaly řádkům ve zdroji dat pomocí DataSetnázvů , DataTablea IDataReader .
protected:
virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer
Parametry
- dataReader
- IDataReader
Název procesu IDataReader.
- startRecord
- Int32
Číslo záznamu od nuly, kterým začnete.
- maxRecords
- Int32
Maximální počet záznamů, které se mají načíst. Pokud chcete načíst všechny záznamy po počátečním záznamu, zadejte hodnotu 0.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Výjimky
Poznámky
Hodnota maxRecords
0 získá všechny záznamy nalezené po počátečním záznamu. Pokud maxRecords
je větší než počet zbývajících řádků, vrátí se pouze zbývající řádky a nevystaví se žádná chyba.
Platí pro
Fill(DataSet, Int32, Int32, String)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
public:
int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer
Parametry
- startRecord
- Int32
Číslo záznamu od nuly, kterým začnete.
- maxRecords
- Int32
Maximální počet záznamů, které se mají načíst. Pokud chcete načíst všechny záznamy po počátečním záznamu, zadejte hodnotu 0.
- srcTable
- String
Název zdrojové tabulky, která se má použít pro mapování tabulky.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Výjimky
Hodnota DataSet je neplatná.
Připojení nebylo nalezeno.
Příklady
Následující příklad používá odvozenou třídu , OleDbDataAdapter, k vyplnění objektu DataSet 15 řádky počínaje řádkem 10 z tabulky Categories . V tomto příkladu se předpokládá, že jste vytvořili objekty OleDbDataAdapter a DataSet.
public void GetRecords()
{
// ...
// create dataSet and adapter
// ...
adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
' ...
' create dataSet and adapter
' ...
adapter.Fill(dataSet, 9, 15, "Categories")
End Sub
Poznámky
Hodnota maxRecords
0 získá všechny záznamy nalezené po počátečním záznamu. Pokud maxRecords
je větší než počet zbývajících řádků, vrátí se pouze zbývající řádky a nevystaví se žádná chyba.
Pokud je odpovídající příkaz select příkazem, který vrací více výsledků, Fill platí maxRecords
pouze pro první výsledek.
Metoda Fill načte data ze zdroje dat pomocí příkazu SELECT. Objekt IDbConnection přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. IDbConnection Pokud je volána hodnota uzavřená předFill, otevře se pro načtení dat a pak se zavře. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Pokud příkaz nevrátí žádné řádky, nejsou do objektu DataSetpřidány žádné tabulky, ale není vyvolána žádná výjimka.
DbDataAdapter Pokud objekt při 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.
Když zadaný dotaz vrátí více výsledků, každá sada výsledků se umístí do samostatné tabulky. Další sady výsledků se nazývají připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Vzhledem k tomu, že pro dotaz, který nevrací řádky, není vytvořena žádná tabulka, pokud zpracujete vložený dotaz následovaný výběrovým dotazem, bude tabulka vytvořená pro výběrový dotaz pojmenována "Tabulka", protože se jedná o první vytvořenou tabulku. 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 Fill 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 Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
Pokud Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Pokud při naplňování tabulek dat dojde k chybě nebo výjimce, řádky přidané před výskytem chyby zůstanou v tabulkách dat. Zbývající část operace se přeruší.
Pokud příkaz SELECT použitý k naplnění DataSet vrátí více výsledků, například dávkové příkazy SQL, mějte na paměti následující:
Při zpracování více výsledků z dávkového příkazu SQL platí
maxRecords
pouze pro první výsledek. Totéž platí pro řádky obsahující výsledky v kapitolách (Zprostředkovatel dat rozhraní .NET Framework pouze pro OLE DB). Výsledek nejvyšší úrovně je omezený ,maxRecords
ale přidají se všechny podřízené řádky.Pokud jeden z výsledků obsahuje chybu, všechny následné výsledky se přeskočí a nepřidají se do .DataSet
Při použití následných Fill volání k aktualizaci obsahu DataSetnástroje musí být splněny dvě podmínky:
Příkaz SQL by se měl shodovat DataSets příkazem, který se původně použil k naplnění .
Musí existovat informace o sloupci Klíč .
Pokud jsou k dispozici informace o primárním klíči, všechny duplicitní řádky se odsouhlasí a zobrazí se pouze jednou v objektu DataTable , který odpovídá hodnotě DataSet. Informace o primárním klíči mohou být nastaveny buď prostřednictvím FillSchema, zadáním PrimaryKey vlastnosti objektu DataTablenebo nastavením MissingSchemaAction vlastnosti na AddWithKey
hodnotu .
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
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
.
Poznámka
Parametr DataSet
nebude obsahovat více než počet záznamů označených parametrem maxRecords
. Celá sada výsledků vygenerovaná dotazem se ale ze serveru stále vrací.
Poznámky pro dědice
Při přepsání Fill(DataSet) v odvozené třídě nezapomeňte volat metodu základní třídy Fill(DataSet) .
Viz také
Platí pro
Fill(Int32, Int32, DataTable[])
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Přidá nebo aktualizuje řádky v jednom nebo více DataTable objektech tak, aby odpovídaly řádkům ve zdroji dat počínaje zadaným záznamem a načtením až do zadaného maximálního počtu záznamů.
public:
int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer
Parametry
- startRecord
- Int32
Číslo záznamu od nuly, kterým začnete.
- maxRecords
- Int32
Maximální počet záznamů, které se mají načíst. Pokud chcete načíst všechny záznamy po počátečním záznamu, zadejte hodnotu 0.
Návraty
Počet řádků, které byly úspěšně přidány nebo aktualizovány v DataTable objektech. Tato hodnota nezahrnuje řádky ovlivněné příkazy, které nevrací řádky.
Výjimky
dataTables
je null
nebo prázdné pole.
Poznámky
Hodnota maxRecords
0 získá všechny záznamy nalezené po počátečním záznamu. Pokud maxRecords
je větší než počet zbývajících řádků, vrátí se pouze zbývající řádky a nevystaví se žádná chyba.
Metoda Fill načte řádky ze zdroje dat pomocí příkazu SELECT určeného přidruženou SelectCommand vlastností. Objekt připojení přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. Pokud je připojení před Fill zavolání ukončeno, otevře se pro načtení dat a pak se ukončí. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Operace Fill pak přidá řádky do cílových DataTable objektů v objektu DataSeta vytvoří DataTable objekty, pokud ještě neexistují. Při vytváření DataTable objektů Fill operace obvykle vytváří pouze metadata názvů sloupců. Pokud je ale vlastnost nastavená MissingSchemaAction na AddWithKey
, vytvoří se také odpovídající primární klíče a omezení.
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
Pokud datový adaptér při 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. Když se do DataSetpřidá více sad výsledků dotazu , každá sada výsledků dotazu se umístí do samostatné tabulky. Další sady výsledků se nazývají 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.
Když příkaz SELECT použitý k naplnění DataSet vrátí více výsledků, například dávkové příkazy SQL, pokud jeden z výsledků obsahuje chybu, všechny následné výsledky se přeskočí a nepřidají se do DataSet.
Metodu Fill můžete použít vícekrát na stejném DataTable. Pokud existuje primární klíč, příchozí řádky se sloučí s odpovídajícími řádky, které už existují. Pokud neexistuje žádný primární klíč, připojí se příchozí řádky k 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
.
Viz také
Platí pro
Fill(DataTable)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
public:
int Fill(System::Data::DataTable ^ dataTable);
public int Fill (System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int
Public Function Fill (dataTable As DataTable) As Integer
Parametry
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Výjimky
Zdrojová tabulka je neplatná.
Poznámky
Metoda Fill načte řádky ze zdroje dat pomocí příkazu SELECT určeného přidruženou SelectCommand vlastností. Objekt připojení přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. Pokud se připojení před Fill zavolání ukončí, otevře se za účelem načtení dat a pak se ukončí. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Operace Fill pak přidá řádky do cílových DataTable objektů v objektu DataSeta vytvoří DataTable objekty, pokud ještě neexistují. Při vytváření DataTable objektů Fill operace obvykle vytváří pouze metadata názvů sloupců. Pokud je ale vlastnost nastavená MissingSchemaAction na AddWithKey
, vytvoří se také odpovídající primární klíče a omezení.
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.
Přetížení Fill , které přijímá DataTable
jako parametr, získá pouze první výsledek. Použijte přetížení Fill , které přijímá DataSet
jako parametr pro získání více výsledků.
Metoda Fill 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 Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
Pokud Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Metodu Fill můžete použít vícekrát na stejném DataTable. Pokud existuje primární klíč, příchozí řádky se sloučí s odpovídajícími řádky, které už existují. Pokud neexistuje žádný primární klíč, připojí se příchozí řádky k objektu DataTable.
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
Poznámka
Při zpracování dávkových příkazů SQL, které vrací více výsledků, implementace Fill a FillSchema pro zprostředkovatele dat rozhraní .NET Framework načítá informace o schématu pouze pro první výsledek.
Poznámky pro dědice
Toto přetížení Fill(DataSet) metody je chráněno a je určeno pro použití zprostředkovatelem dat rozhraní .NET Framework.
Viz také
Platí pro
Fill(DataTable, IDataReader)
Přidá nebo aktualizuje řádky v objektu tak DataTable , aby odpovídaly řádkům ve zdroji dat pomocí zadaných DataTable názvů a IDataReader .
protected:
virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer
Parametry
- dataReader
- IDataReader
Název procesu IDataReader.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataTable. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Platí pro
Fill(DataSet, String)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
public:
int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer
Parametry
- srcTable
- String
Název zdrojové tabulky, která se má použít pro mapování tabulky.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Výjimky
Zdrojová tabulka je neplatná.
Příklady
Následující příklad používá odvozenou třídu , OleDbDataAdapter, k vyplnění DataSet řádků z tabulky categories. V tomto příkladu se předpokládá, že jste vytvořili objekty OleDbDataAdapter a DataSet.
public void GetRecords()
{
// ...
// create dataSet and adapter
// ...
adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
' ...
' create dataSet and adapter
' ...
adapter.Fill(dataSet, "Categories")
End Sub
Poznámky
Metoda Fill načte data ze zdroje dat pomocí příkazu SELECT. Objekt IDbConnection přidružený k příkazu select musí být platný, ale nemusí být otevřený. IDbConnection Pokud je volána hodnota je uzavřena předFill, je otevřena pro načtení dat a poté uzavřena. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Pokud příkaz nevrátí žádné řádky, nebudou do objektu DataSetpřidány žádné tabulky a nebude vyvolána žádná výjimka.
DbDataAdapter Pokud objekt při 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.
Když zadaný dotaz vrátí více výsledků, každá sada výsledků se umístí do samostatné tabulky. Další sady výsledků se nazývají připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Vzhledem k tomu, že pro dotaz, který nevrací řádky, se nevytvořila žádná tabulka, pokud byste zpracovali vložený dotaz následovaný výběrovým dotazem, tabulka vytvořená pro výběrový dotaz by měla název "Tabulka", protože se jedná o první vytvořenou tabulku. 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 Fill 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 Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
Pokud Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Pokud při naplňování tabulek dat dojde k chybě nebo výjimce, řádky přidané před výskytem chyby zůstanou v tabulkách dat. Zbývající část operace se přeruší.
Pokud příkaz SELECT použitý k naplnění DataSet vrátí více výsledků, například dávkový příkaz SQL, mějte na paměti následující:
- Pokud jeden z výsledků obsahuje chybu, všechny následné výsledky se přeskočí a nepřidají se do .DataSet
Při použití následných Fill volání k aktualizaci obsahu DataSetnástroje musí být splněny dvě podmínky:
Příkaz SQL by se měl shodovat DataSets příkazem, který se původně použil k naplnění .
Musí existovat informace o sloupci Klíč . Pokud jsou k dispozici informace o primárním klíči, všechny duplicitní řádky se odsouhlasí a zobrazí se pouze jednou v objektu DataTable , který odpovídá hodnotě DataSet. Informace o primárním klíči mohou být nastaveny buď prostřednictvím FillSchema, zadáním PrimaryKey vlastnosti objektu DataTablenebo nastavením MissingSchemaAction vlastnosti na
AddWithKey
hodnotu .
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
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
.
Poznámky pro dědice
Při přepsání Fill(DataSet) v odvozené třídě nezapomeňte volat metodu základní třídy Fill(DataSet) .
Viz také
Platí pro
Fill(DataSet)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Přidá nebo aktualizuje řádky v objektu DataSet.
public:
override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer
Parametry
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataSet. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Implementuje
Poznámky
Metoda Fill načte data ze zdroje dat pomocí příkazu SELECT. Objekt IDbConnection přidružený k příkazu select musí být platný, ale nemusí být otevřený. IDbConnection Pokud je volána hodnota uzavřená předFill, otevře se pro načtení dat a pak se zavře. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Pokud při naplňování tabulek dat dojde k chybě nebo výjimce, řádky přidané před výskytem chyby zůstanou v tabulkách dat. Zbývající část operace se přeruší.
Pokud příkaz nevrátí žádné řádky, nebudou do objektu DataSetpřidány žádné tabulky a nebude vyvolána žádná výjimka.
DbDataAdapter Pokud objekt při 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.
Když zadaný dotaz vrátí více výsledků, sada výsledků pro každý řádek vracející dotaz se umístí do samostatné tabulky. Další sady výsledků se nazývají připojením integrálních hodnot k zadanému názvu tabulky (například "Tabulka", "Tabulka1", "Tabulka2" atd.). Vzhledem k tomu, že pro dotaz, který nevrací řádky, není vytvořena žádná tabulka, pokud zpracujete vložený dotaz následovaný výběrovým dotazem, bude tabulka vytvořená pro výběrový dotaz pojmenována "Tabulka", protože se jedná o první vytvořenou tabulku. 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.
Pokud příkaz SELECT použitý k naplnění DataSet vrátí více výsledků, například dávkové příkazy SQL, pokud jeden z výsledků obsahuje chybu, všechny následné výsledky se přeskočí a nepřidají se do DataSet.
Při použití následných Fill volání k aktualizaci obsahu DataSetnástroje musí být splněny dvě podmínky:
Příkaz SQL by se měl shodovat DataSets příkazem, který se původně použil k naplnění .
Musí existovat informace o sloupci Klíč .
Pokud jsou k dispozici informace o primárním klíči, všechny duplicitní řádky se odsouhlasí a zobrazí se pouze jednou v objektu DataTable , který odpovídá hodnotě DataSet. Informace o primárním klíči mohou být nastaveny buď prostřednictvím FillSchema, zadáním PrimaryKey vlastnosti objektu DataTablenebo nastavením MissingSchemaAction vlastnosti na AddWithKey
hodnotu .
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
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
.
Viz také
Platí pro
Fill(DataTable, IDbCommand, CommandBehavior)
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
- Zdroj:
- DbDataAdapter.cs
Přidá nebo aktualizuje řádky v objektu tak DataTable , aby odpovídaly řádkům ve zdroji dat pomocí zadaných DataTablehodnot , IDbCommand a CommandBehavior.
protected:
virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTable As DataTable, command As IDbCommand, behavior As CommandBehavior) As Integer
Parametry
- command
- IDbCommand
Příkaz SQL SELECT použitý k načtení řádků ze zdroje dat.
- behavior
- CommandBehavior
Jedna z CommandBehavior hodnot.
Návraty
Počet řádků, které byly úspěšně přidány do nebo aktualizovány v objektu DataTable. To nezahrnuje řádky ovlivněné příkazy, které nevracejí řádky.
Poznámky
Metoda Fill načte řádky ze zdroje dat pomocí příkazu SELECT určeného přidruženou SelectCommand vlastností. Objekt připojení přidružený k příkazu SELECT musí být platný, ale nemusí být otevřený. Pokud se připojení před Fill zavolání ukončí, otevře se za účelem načtení dat a pak se ukončí. Pokud je připojení před Fill zavolání otevřené, zůstane otevřené.
Operace Fill pak přidá řádky do zadaného cílového DataTable objektu v objektu DataSeta vytvoří DataTable objekt , pokud ještě neexistuje. Při vytváření objektu DataTableFill operace obvykle vytváří pouze metadata názvu sloupce. Pokud je ale vlastnost nastavená MissingSchemaAction na AddWithKey
, vytvoří se také odpovídající primární klíče a omezení.
DbDataAdapter Pokud objekt při 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řetížení Fill , které přijímá DataTable
jako parametr, získá pouze první výsledek. Použijte přetížení Fill , které přijímá DataSet
jako parametr pro získání více výsledků.
Metodu Fill můžete použít vícekrát na stejném DataTable. Pokud existuje primární klíč, příchozí řádky se sloučí s odpovídajícími řádky, které už existují. Pokud neexistuje žádný primární klíč, připojí se příchozí řádky k objektu DataTable.
Pokud objekt SelectCommand
vrátí výsledky VNĚJŠÍHO SPOJENÍ, DataAdapter
nenastaví PrimaryKey hodnotu pro výsledný DataTableobjekt . Abyste zajistili správné překladu duplicitních řádků, musíte explicitně definovat primární klíč. Další informace najdete v tématu Definování primárních klíčů.
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
.
Poznámky pro dědice
Toto přetížení Fill(DataSet) metody je chráněno a je určeno pro použití zprostředkovatelem dat rozhraní .NET Framework.