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 |
---|---|
Poskytuje vysvětlení návrhu nástroje pro vytváření objektů DataSet. |
|
Vysvětluje, jak vytvořit zadaný objekt dataset pomocí návrhových nástrojů v Visual Studio. |
|
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é. |
|
Vysvětluje, jak otevřít soubory z Aplikaci Solution Explorer a Zdroje dat okna. |
|
Vysvětluje, jak upravovat objekty v objektu dataset pomocí Dataset Návrhář. |
|
Obsahuje podrobné pokyny pro vytvoření zadaný objekt dataset bez pomoci Průvodce konfigurací zdroje dat. |
|
Obsahuje odkazy na témata, která popisují, jak vytvářet a upravovat tabulky dat pomocí nástrojů návrhu. |
|
Obsahuje odkazy na témata, která popisují, jak vytvořit a upravit data vztahy s návrhu nástroje. |
|
Obsahuje odkazy na témata, která popisují, jak vytvořit a upravit pomocí nástrojů návrhu TableAdapters. |
|
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
Objekty objekt dataset jsou vystaveny prostřednictvím standardních programovacích konstrukcí, například vlastnosti a kolekce.Příklad:
DataSet Zahrnuje třída DataTableCollection kolekce tabulek dat a DataRelationCollection kolekce DataRelation objektů.
DataTable Zahrnuje třída DataRowCollection kolekce řádků tabulky DataColumnCollection kolekce sloupce dat a ChildRelations a ParentRelations kolekcí dat vztahy.
DataRow Zahrnuje třída 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 for the RowState property include Deleted, Modified, Added, and Unchanged.
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 |
---|---|
msprop:Generator_UserDSName |
|
msprop:Generator_DataSetName |
|
msprop:Generator_UserTableName |
|
msprop:Generator_TablePropName |
|
msprop:Generator_TableVarName |
|
msprop:Generator_TableClassName |
|
msprop:Generator_RowClassName |
|
msprop:Generator_RowEvHandlerName |
|
msprop:Generator_RowEvArgName |
|
msprop:Generator_UserColumnName |
|
msprop:Generator_ColumnPropNameInTable |
|
msprop:Generator_ColumnVarNameInTable |
|
msprop:Generator_ColumnPropNameInRow |
Viz také
Koncepty
Příprava vaší aplikace k příjmu dat
Vázání ovládacích prvků k datům v sadě Visual Studio
Upravování dat ve vaší aplikaci