Sdílet prostřednictvím


Práce s datovými sadami v sadě Visual Studio

Soubory jsou objekty, které obsahují data tabulky, kde můžete dočasně uložit data pro použití v aplikaci.Pokud aplikace vyžaduje práci s daty, můžete data načíst do dataset, který poskytuje aplikace pracovat s místní mezipaměti v paměti údajů.I v případě, že aplikace bude odpojen od databáze můžete pracovat s daty v objektu dataset.Objekt dataset udržuje informace o změnách jeho data tak, že aktualizace lze sledovat a odeslána zpět do databáze, která bude aplikace připojena.

Následující témata obsahují podrobné informace pro práci se soubory v programu Visual Studio:

Téma

Description

Vytváření a úpravy typovaných datových sad

Poskytuje vysvětlení návrhu nástroje pro vytváření objektů DataSet.

Postupy: Vytvoření typové datové sady

Vysvětluje, jak vytvořit zadaný objekt dataset pomocí návrhových nástrojů v Visual Studio.

Postupy: Rozšíření funkcí datové sady

Obsahuje pokyny pro vytvoření třídy pro objekt dataset, kde můžete přidat kód kromě kódu generovaném na částečné.

Postupy: Otevření datové sady v Návrháři DataSet

Vysvětluje, jak otevřít soubory z Aplikaci Solution Explorer a Zdroje dat okna.

Postupy: Upravování datové sady

Vysvětluje, jak upravovat objekty v objektu dataset pomocí Dataset Návrhář.

Návod: Vytvoření datové sady pomocí Návrháře DataSet

Obsahuje podrobné pokyny pro vytvoření zadaný objekt dataset bez pomoci Průvodce konfigurací zdroje dat.

Navrhování DataTables

Obsahuje odkazy na témata, která popisují, jak vytvářet a upravovat tabulky dat pomocí nástrojů návrhu.

Vztahy v datových sadách

Obsahuje odkazy na témata, která popisují, jak vytvořit a upravit data vztahy s návrhu nástroje.

TableAdapters

Obsahuje odkazy na témata, která popisují, jak vytvořit a upravit pomocí nástrojů návrhu TableAdapters.

Práce s datovými sadami ve vícevrstvých aplikacích

Vysvětluje, jaké aplikace n té jsou, jaké funkce jsou k dispozici pro práci se soubory v n té aplikací.

Struktura DataSet je podobná relační databáze; poskytuje hierarchické objektový model tabulek, řádky, sloupce, omezení a vztahy.

Soubory můžete zadané nebo nezadané.(Další informace naleznete v níže uvedené části s názvem "Zadaný Versus netypovou objektech DataSet.") Zadané soubory odvodit ze souborů XSD jejich schéma (strukturu tabulek a sloupců) a program proti snadněji.Zadaný nebo netypovou soubory můžete použít v aplikacích.Visual Studio obsahuje další nástroje podpory pro zadané soubory a programování s nimi je snadnější a méně k chybám.

Vytvořit zadané soubory spuštěním Průvodce konfigurací zdroje dat, nebo přidáním DataSet zboží prostřednictvím Přidat novou položku na příkaz projektu nabídce.Další informace naleznete v tématu Postupy: Vytvoření typové datové sady.

Vytvořit soubory bez typu přetažením DataSet položek z nástrojů do Návrhář formulářů Windows nebo Návrhář komponent.

Po vytvoření objektů DataSet, upravte je Vytváření a úpravy typovaných datových sad.

Vytvoření a práce se soubory zadali a bez typu pomocí následujících částí .NET Framework obory názvů.

Soubory jsou v oboru názvů System.Data

Obor názvů systému Data sady dat

Objekty objekt dataset jsou vystaveny prostřednictvím standardních programovacích konstrukcí, například vlastnosti a kolekce.Příklad:

Vyplnění soubory s daty

Objekt dataset obsahuje skutečné údaje ve výchozím nastavení.Vyplnění objektu dataset s daty ve skutečnosti odkazuje na načítání dat do jednotlivých DataTable objekty, které tvoří objekt dataset.Vyplnění tabulky dat spuštění dotazů na TableAdapter nebo provádění datový adaptér (například SqlDataAdapter) příkazy.Po zaplnění objektu dataset dat různé události jsou zaznamenávány, omezení jsou zaškrtnuty, atd.Další informace o načítání dat do objektu dataset, viz Načítání dat do vaší aplikace.

Kód pro vyplnění objektu dataset je automaticky přidán do obslužné rutiny události formuláře zatížení při přetahování položek z Okno zdroje dat do formuláře v aplikaci systému Windows.Další informace, vyplňte následující názorný postup: Návod: Zobrazování dat ve formuláři Windows.

Příklad vyplnění objektu dataset s TableAdapter:

Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
this.customersTableAdapter.Fill(this.northwindDataSet.Customers);

Můžete naplnit objekt dataset různými způsoby:

  • Pokud jste vytvořili pomocí nástrojů návrhu jako jednoho z průvodců data objektu dataset, volání Fill metoda TableAdapter.(TableAdapters jsou vytvořeny s výchozím Fill metoda, ale jsou příležitost změnit název, tak název skutečné metody se mohou lišit.) Další informace naleznete v části "Vyplňování Dataset TableAdapter pomocí" Postupy: Vyplnění datové sady daty.

  • Volání Fill metodou DataAdapter.Další informace naleznete v tématu Populating a DataSet from a DataAdapter.

  • Ruční vyplnění tabulky v objektu dataset vytvořením DataRow objekty a jejich přidání do tabulky DataRowCollection kolekce.(Lze pouze provést v době spuštění; Nelze nastavit DataRowCollection kolekce v době návrhu.) Další informace naleznete v tématu Adding Data to a DataTable.

  • Číst proud nebo dokument XML do objektu dataset.Další informace získáte v následujícím tématu o metodě ReadXml.Příklad naleznete v tématu Návod: Načítání dat XML do datové sady.

  • Sloučit (kopie) obsahu jednoho objektu dataset s jinou.Tento scénář může být užitečné, pokud vaše soubory aplikace získá z různých zdrojů (různé webové služby XML, například), ale musí je konsolidovat do jediného objektu dataset.Další informace naleznete Merging DataSet Contents.

  • (Kopie) sloučit obsah jednoho DataTable s jinou.

Uložení dat v objektu Dataset zpět do databáze

Při změně záznamů v objektu dataset, mají změny budou zapsány zpět do databáze.Chcete-li zapsat změny do databáze z objektu dataset, zavolejte Update metodu TableAdapter nebo DataAdapter , zprostředkovává komunikaci mezi objekt dataset a odpovídající databázi.

Při použití nástrojů pro návrh data v aplikaci Visual Studio odešlete vyvoláním metody Update TableAdapter a předávání dat tabulky, kterou chcete uložit data zpět do databáze.Příklad:

CustomersTableAdapter.Update(NorthwindDataSet.Customers)
customersTableAdapter.Update(northwindDataSet.Customers);

Přesněji aktualizačního procesu volání metod TableAdapter DBDirect kde můžete předat v jednotlivých hodnot pro každý řádek dat.Další informace naleznete v tématu Postupy: Aktualizace dat pomocí TableAdapter a Návod: Ukládání dat pomocí metod TableAdapter DBDirect.

DataRow Obsahuje třídy pro práci s jednotlivými záznamy RowState vlastností, jejichž hodnoty označují, zda a jak byl změněn v řádku od první načtení tabulky dat z databáze.Possible values include Deleted, Modified, Added, and Unchanged.Update Metod TableAdapter a DataAdapter prozkoumejte hodnotu RowState vlastnost záznamy, které musí být zapsány do databáze a jaké konkrétní databáze příkaz (InsertCommand, UpdateCommand, a DeleteCommand) by měly být uplatňovány.

Další informace o aktualizaci dat, viz Ukládání dat.

Procházení záznamů v objektech DataSet

Objekt dataset je plně odpojené kontejner pro data, nepodporují soubory (na rozdíl od sady záznamů ADO) pojem aktuální záznam.Všechny záznamy v objektu dataset jsou místo toho k dispozici kdykoli.

Protože neexistuje aktuální záznam, není žádná zvláštní vlastnost, kterou odkazuje aktuální záznam a neexistují žádné metody nebo vlastnosti pro přesun z jednoho záznamu do jiného (viz poznámka níže).Přístup jednotlivých tabulek v objektu dataset jako objekty; Každá tabulka poskytuje kolekce řádků.Můžete zacházet to podobně jako všechny kolekce řádků z indexu v kolekci nebo užívajících příkazy specifické pro kolekci v programovacím jazyce.

Můžete například získat čtvrtý řádek Customers tabulky s následujícím kódem:

TextBox1.Text = NorthwindDataSet.Customers(3).ContactName
textBox1.Text = northwindDataSet.Customers[3].ContactName;

[!POZNÁMKA]

Pokud vytváříte vazbu ovládacích prvků ve formuláři na třídu dataset, můžete použít BindingNavigator součást zjednodušení přístupu k jednotlivé záznamy.Další informace naleznete v tématu Postupy: Procházení dat v rozhraní Windows Forms.

LINQ k objektu Dataset

LINQ na DataSetumožňuje LINQ (Language-Integrated Query) nad daty v DataSet objektu.Další informace naleznete v tématu LINQ to DataSet.

Soubory a XML

Objekt dataset je relační zobrazení dat, která je zastoupena v XML.Tento vztah mezi soubory a XML umožňuje využít následujících funkcí soubory:

  • Struktura objektu DataSet – tabulek, sloupců, vztahy a omezení – mohou být definovány ve schématu XML.Soubory lze číst a zapisovat schémat, které ukládají pomocí strukturovaných informací ReadXmlSchema a WriteXmlSchema metod.Pokud je k dispozici žádné schéma, objekt dataset lze odvodit jeden (prostřednictvím jeho InferXmlSchema metoda) od data v dokumentu XML, který je strukturován relační způsobem.Další informace o schématech XML naleznete v tématu Building XML Schemas.

  • Třídy dataset, která zahrnuje informace o schématu pro definování struktury dat můžete generovat.Říká se zadali dataset.Informace o vytváření zadaný objekt dataset Postupy: Vytvoření typové datové sady.

  • Proud nebo dokumentu XML můžete načíst do dataset je objekt dataset pomocí ReadXml metoda a zápis dataset mimo ve formátu XML, je objekt dataset WriteXml metoda.Protože je XML standardní formát pro data mezi různými aplikacemi, to znamená načíst objekt dataset s formátu XML informace odeslané jinými aplikacemi.Podobně můžete objekt dataset zapsat data jako proudu XML nebo dokument sdílet s jinými aplikacemi nebo jednoduše uložena ve standardním formátu.

  • Vytvoříte pohled XML ( XmlDataDocument objektu) obsahu dataset nebo data tabulky a pak zobrazit a pracovat s daty pomocí metody relační (formou dataset) nebo metody XML.Zobrazení dvou automaticky synchronizovány, jako jsou změněna.

Zadaný Versus netypovou objektů DataSet.

Zadaný objekt dataset je dataset, nejprve odvozených od DataSet třídy a použije informace z Dataset Návrhář, který je uložen v souboru XSD generovat novou třídu dataset silnými.Informace ze schématu (tabulky, sloupce atd.) je vygenerován a kompilován do této nové třídy dataset jako sada prvotřídní objekty a vlastnosti.Protože zadaný objekt dataset dědí od DataSet třídy zadané třídy předpokládá všechny funkce DataSet třídy a metody, instance, které lze použít DataSet třídy jako parametr

Netypovou dataset, naopak nemá žádné odpovídající předdefinované schéma.Jako v zadaný objekt dataset netypovou dataset obsahuje tabulky, sloupce a podobně, ale ty, které jsou vystaveny pouze jako kolekce.(Však po ruční vytvoření tabulek a dalších prvků dat v netypovou dataset, můžete exportovat struktura je objekt dataset jako schéma je objekt dataset pomocí WriteXmlSchema metoda.)

Kontrastní přístup k datům v objektech DataSet zadali a bez typu

Třída pro zadaný objekt dataset má objektový model, ve kterém jeho vlastnosti trvat na skutečné názvy tabulek a sloupců.Pokud pracujete s zadaný objekt dataset, můžete odkazovat pomocí kódu, jako například sloupec:

' This accesses the CustomerID column in the first row of the Customers table. 
Dim customerIDValue As String = NorthwindDataSet.Customers(0).CustomerID
// This accesses the CustomerID column in the first row of the Customers table. 
string customerIDValue = northwindDataSet.Customers[0].CustomerID;

Naopak při práci s netypovou dataset je ekvivalentní kód:

Dim customerIDValue As String =
    CType(dataset1.Tables("Customers").Rows(0).Item("CustomerID"), String)
string customerIDValue = (string)
    dataset1.Tables["Customers"].Rows[0]["CustomerID"];

Není zadaný přístup pouze snadněji číst, ale plně podporuje technologii IntelliSense v Visual StudioEditor kódu. Kromě se snadněji pracovat, poskytuje syntaxi pro zadaný objekt dataset kontrolu v době kompilace typu výrazně snižuje pravděpodobnost výskytu chyb v přiřazení hodnoty členům dataset.Pokud změníte název sloupce v vaše DataSet a poté Kompilovat aplikaci, chybová sestavení.Poklepáním na chybu v sestavení Seznam úkolů, můžete přejít přímo na řádek nebo řádky kódu, které odkazují na původní název sloupce.Přístup do tabulek a sloupců zadaný objekt dataset je poněkud rychlejší při běhu také, protože přístup je určen při kompilaci, nikoli pomocí kolekce v době spuštění.

Přestože zadané soubory mají mnoho výhod, existují různé okolnosti, za kterých je užitečné netypovou dataset.Nejobvyklejší scénář je k dispozici pro objekt dataset žádné schéma.Tato situace může nastat, například v případě, že aplikace komunikuje s komponentou, která vrací třídu dataset, ale nevíte předem je jeho strukturu.Podobně jsou časy, kdy pracujete s daty, která nemá statickou předvídatelné struktury; v takovém případě je nepraktické používat zadaný objekt dataset, protože by se musel obnovit třídu dataset zadaný s každou změnu ve struktuře dat.

Obecně jsou mnohokrát může vytvořit objekt dataset dynamicky bez nutnosti schématu, která je k dispozici.V takovém případě objektu dataset je jednoduše vhodné struktury ve kterém můžete uchovávat informace jako relační způsobem lze znázornit data.Současně můžete využít schopností je objekt dataset jako schopnost serializovat informace předat jiným procesem nebo k zápisu do souboru XML.

Rozlišování DataSet

V rámci objektu dataset názvy tabulek a sloupců jsou standardně velká a malá písmena –, tabulky nazvané "Zákazníci" objekt DataSet může být označovány jako "Zákazníci. Shoduje se konvence v mnoha databázích, včetně výchozí chování serveru SQL Server, kde názvy prvků dat nelze rozlišit pouze případ.

[!POZNÁMKA]

Na rozdíl od objektů DataSet dokumentů XML jsou rozlišována rozlišují názvy prvků dat definovaných ve schématech.Schéma protokolu umožňuje například schéma definovat tabulky nazvané "Zákazníci" a jiné tabulky nazvané "Zákazníci. To může způsobit Kolize názvů při schématu, který obsahuje prvky, které se liší pouze v případě slouží ke generování třídu dataset.

Rozlišování však může být faktorem jak data interpretována v rámci objektu dataset.Například pokud filtrování dat v tabulce dataset kritéria vyhledávání může vrátit jiné výsledky v závislosti na tom, zda je porovnání velká a malá písmena, nebo ne.Můžete řídit rozlišování filtrování, vyhledávání a třídění podle nastavení dataset, CaseSensitive vlastnost.Všechny tabulky v objektu dataset dědí ve výchozím nastavení hodnotu této vlastnosti.(Tato vlastnost pro každé jednotlivé tabulky můžete přepsat nastavení v tabulce CaseSensitive vlastnosti.)

Objekty DataRelation a související tabulky

Pokud máte více tabulek v objektu dataset, informace v tabulkách souvisejí.Objekt dataset nemá žádný inherentní tyto vztahy; Chcete-li pracovat s daty v tabulkách, proto můžete vytvořit DataRelation objekty, které popisují vztahy mezi tabulkami v objektu dataset.Další informace naleznete v tématu Postupy: Přístup k záznamům v souvisejících DataTables.DataRelationobjekty lze programově načíst souvisejícím podřízeným záznamům pro nadřazený záznam a nadřazený záznam z podřízeného záznamu.Další informace naleznete v tématu Vztahy v datových sadách.Pokud databáze obsahuje vztahy mezi dvěma nebo více tabulek, automaticky vytvoří návrhové nástroje DataRelation objekty pro vás.

Představte si například, odběratele a pořadí dat, například v databázi Northwind.Customers Tabulka může obsahovat například následující záznamy:

CustomerID   CompanyName               City
ALFKI        Alfreds Futterkiste       Berlin
ANTON        Antonio Moreno Taquerias  Mexico D.F.
AROUT        Around the Horn           London

Objekt dataset také obsahovat jinou tabulku s informacemi o objednávce.Orders Tabulka obsahuje ID zákazníka jako sloupec cizího klíče.Pouze některé sloupce ve výběru Orders tabulky, může vypadat následujícím způsobem:

OrderId    CustomerID    OrderDate
10692      ALFKI         10/03/1997
10702      ALFKI         10/13/1997
10365      ANTON         11/27/1996
10507      ANTON         4/15/1997

Protože každý zákazník může mít více než jednu objednávku, je na více souvislost mezi Zákazníci a objednávky.Zákazník ALFKI má v tabulce uvedené dvě objednávky.

Můžete použít DataRelation získat související záznamy z tabulky podřízený nebo nadřazený objekt.Například při práci s záznamu popisujícím ANTON zákazníka, můžete získat kolekci záznamy popisující objednávky tohoto zákazníka.Další informace naleznete v tématu GetChildRows.Podobně při práci s záznamu popisujícím 10507 KódObjednávky, můžete vytvořit objekt vztah nadřazené ANTON získat záznam přejít.Další informace naleznete v tématu GetParentRow.

Omezení

Jako ve většině databází podporují soubory omezení jako způsob, jak zajistit integritu dat.Omezení jsou pravidla, která jsou použita vložen, aktualizace nebo odstranění tabulky řádky.Můžete definovat dva typy omezení:

  • A jedinečné zkontroluje nové hodnoty ve sloupci v tabulce jedinečné omezení.

  • A cizí klíč omezení, která definuje pravidla pro postup týkající se podřízené záznamy by měly být aktualizovány, aktualizace nebo odstranění záznamu v hlavní tabulce.Například omezení cizího klíče ověří, zda je před povolením vytváření všech podřízených záznamů nadřazený záznam.

Objekt DataSet omezení jsou přidruženy (omezení cizího klíče) pro jednotlivé tabulky nebo sloupce (jedinečné omezení, která zaručuje, že jsou jedinečné hodnoty sloupce).Omezení jsou implementovány jako objekty typu UniqueConstraint nebo ForeignKeyConstraint.Potom přidán do Constraints kolekce DataTable.Nastavením jednoduše lze také zadat jedinečné omezení Unique vlastnosti DataColumn na true.

Samotný objekt dataset podporuje Boolean EnforceConstraints vlastnost, která určuje, zda bude nebo nebude vynucena omezení.Ve výchozím nastavení je tato vlastnost nastavena na hodnotu true. Však jsou časy, kdy je vhodné dočasně vypnout omezení.Nejčastěji se jedná, když změníte tak, že bude dočasně způsobit neplatný stav záznamu.Po dokončení změny (a tím vrácení platného stavu) můžete je znovu povolit omezení.

V Visual Studio, je implicitně vytvořit omezení při definování objektu dataset.Přidáním primárního klíče pro objekt dataset implicitně vytvořit jedinečné omezení pro sloupec primárního klíče.Jedinečné omezení ostatní sloupce můžete určit nastavením jejich Unique vlastnost true.

Vytvořením vytvořit omezení cizího klíče DataRelation objektu v objektu dataset.Vedle umožňuje programově načíst informace o související záznamy DataRelation objekt umožňuje definovat pravidla omezení cizího klíče.

Rozšířené vlastnosti objektu DataSet

Rozšířené vlastnosti poskytují mapování názvů při konfliktům názvů, které se vyskytují během procesu vytváření objektu dataset ze souboru XSD.Identifikátor souboru XSD se liší od vypočítaného název vytvořený objekt dataset generátor, rozšířené vlastnosti je přidán do objektu dataset v msprop oboru názvů.Následující tabulka zobrazuje nejvíce rozšířené vlastnosti, které mohou být generovány:

Objekt

Rozšířené vlastnosti

DataSet

msprop:Generator_UserDSName

msprop:Generator_DataSetName

DataTable

msprop:Generator_UserTableName

msprop:Generator_TablePropName

msprop:Generator_TableVarName

msprop:Generator_TableClassName

msprop:Generator_RowClassName

msprop:Generator_RowEvHandlerName

msprop:Generator_RowEvArgName

DataColumn

msprop:Generator_UserColumnName

msprop:Generator_ColumnPropNameInTable

msprop:Generator_ColumnVarNameInTable

msprop:Generator_ColumnPropNameInRow

Viz také

Koncepty

Příprava vaší aplikace k příjmu dat

Načítání dat do vaší aplikace

Vázání ovládacích prvků k datům v sadě Visual Studio

Upravování dat ve vaší aplikaci

Ověřování dat

Ukládání dat

Další zdroje

Přehled datových aplikacích v sadě Visual Studio

Připojení k datům v sadě Visual Studio