JAK: Vytvořit a použít zadaný objekt DataSet pomocí Visual C# .NET

Souhrn

Tento článek ukazuje, jak vytvořit a použít zadaný objekt DataSet v malé webové aplikace. Zadaný objektů DataSet, které dědí z třídy DataSet vytvořte prvotřídní členy objektu DataSetv dataTables zadejte a objektů DataColumns, získávání mnoho výhod, které jsou pomocí silného typování.

Požadavky

Následující položky popisují doporučený hardware, software, síťovou infrastrukturu, dovednosti a knowledge a aktualizace service Pack, které potřebujete k dokončení těchto kroků:
  • Microsoft SQL Server verze 6.5 (nebo vyšší) s databází Northwind
Předchozí znalosti požadované:
  • Obecná znalost Microsoft SQL Server
  • Obecná znalost Microsoft Visual Studio .NET
  • Obecná znalost Microsoft ADO.NET
  • Obecná znalost Microsoft .NET webové ovládací prvky

Definovaných datových sad

Postupujte podle následujících kroků k vytvoření malé webové aplikace pomocí aplikace Visual Studio .NET. Webová aplikace používá zadaný objekt DataSet zobrazit výsledky dotazu SQL amatérsky vyrobených v databázi Northwind.
  1. Spusťte aplikaci Visual Studio .NET.
  2. Vytvoření nového projektu webové aplikace s názvem TDS v aplikaci Visual C# .NET.
  3. Ujistěte se, že se zobrazí v Průzkumníku řešení. Pokud není zobrazen Průzkumník řešení, stiskněte kombinaci kláves CTRL + ALT + L.
  4. Ujistěte se, že souboru WebForm1.aspx je otevřen v okně editoru. Pokud soubor není otevřený, poklepejte na položku WebForm1.aspx v Průzkumníku řešení otevřete soubor.
  5. V okně Editor klepněte na tlačítko Návrh přepnout do návrhového zobrazení.
  6. Chcete-li otevřít panel nástrojů, stiskněte kombinaci kláves CTRL + ALT + X. V panelu nástrojů klepněte na tlačítko Webové formuláře. Vybrat a přetáhnout do levého horního rohu stránky následující: dva řádky každého štítku následuje textové pole (umístěné vpravo od každého štítku). Podle nich přidejte DataGrid stejným způsobem.
  7. Klepněte na popisek nahoře. Stisknutím klávesy F4 zobrazte okno Vlastnosti. Změňte vlastnost Text na produktu. Klepněte na tlačítko Další označení a změňte jeho vlastnost Text k kategorie.
  8. Chcete-li přidat nové datové sady do projektu, stiskněte kombinaci kláves CTRL + SHIFT + A a v seznamu šablon klikněte na položku DataSet . Název objektu DataSet následující: dsProducts.xsd. Všimněte si, že soubor je skutečně schématu XML. Klepněte na tlačítko OK Nyní se zobrazí světle žluté stránky v okně editoru.
  9. Chcete-li vytvořit zadaný objekt DataSet, stiskněte kombinaci kláves CTRL + ALT + S otevřete Server Explorer.
  10. Klepněte na tlačítko serveryklepněte na název počítače, klepněte na tlačítko SQLServers, název serveru, Northwinda potom klepněte na tlačítko zobrazení.
  11. Vyberte zobrazení serveru SQL Northwind Abecední seznam výrobkůa přetáhněte zobrazení na světle žluté stránky objektu DataSet . Na stránce se zobrazí vizuální reprezentaci generovaných zobrazení sady výsledků. Chcete-li zobrazit skutečné XML pro schéma soubor, klepněte na tlačítko XML v okně editoru.
  12. Schéma založené na objekt SQL serveru nyní existuje. Vytvoření a vyplnění zadaný objekt DataSet, nejprve je nutné generovat třídu, která mapuje schématu. Klepněte pravým tlačítkem myši návrhovém zobrazení a zkontrolujte, zda je vybrána možnost Generování objektu DataSet . Pokud není vybrána, vyberte jej. Stisknutím kláves CTRL + S uložte schéma a generovat třídy.
  13. Chcete-li zobrazit nové třídy zadaný objekt DataSet , klepněte na tlačítko Zobrazit všechny soubory v Průzkumníku řešení.
  14. Rozbalte strom vedle dsProducts.xsd. Zobrazí se soubor dsProducts.vb, který obsahuje nové třídy mapování schématu. Také naleznete v souboru dsProducts.xsx, který se používá pro sledování změn v souborech.
  15. Napsat kód, který zobrazí zadaný objekt DataSet, poklepáním na ikonu přímo na webový formulář (nikoli na webový ovládací prvek). Objeví se webový formulář codebehind a je kurzor umístěn uvnitř události Page_Load .
  16. Pokud chcete třídy, které jsou umístěny v oboru názvů System.Data.SqlClient, přidejte následující příkaz using v horní části codebehind:
    using System.Data.SqlClient;
    Poznámka: oboru názvů, které je nutné mít pro toto malé webové aplikace jsou automaticky odkazován v projektu při vytvoření webové aplikace v aplikaci Visual Studio .NET.

  17. V proceduře události Page_Load vytvořte objekt připojení předáním výchozí konstruktor třídy SqlConnection připojovací řetězec:
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");
  18. Vytvořte objekt SqlCommand, který je pak předán objekt SqlDataAdapter. Předáte improvizovanými příkaz SQL a nový připojení objektu SqlCommand konstruktoru. Bývalé nastaví CommandText vlastnost nový objekt SqlCommand. Můžete také předat název uložené procedury.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
  19. Vytvořte instanci objektu SqlDataAdapter, předáním nového objektu SqlCommand konstruktoru:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
  20. Nyní můžete vytvářet objekty, které jsou nutné k připojení k databázi a vrátit data. Následuje kód pro zadaný objekt DataSet. Všimněte si, že je vytvořena instance dsProducts třídy: třída, která mapuje na dsProducts schéma a dědí od objekt DataSet třídy, není obecného objekt DataSet samotné třídy.
    dsProducts tds = new dsProducts();
  21. Zavolejte metodu výplně SqlDataAdapter, předání v zadaný objekt DataSet a DataTable název_tabulky vlastnost zadaný objekt DataSet:
    da.Fill(tds, tds.Tables[0].TableName);
  22. Chcete-li nastavit vlastnost Text ovládací prvky textové pole silného typu sloupce v zadaný objekt DataSetje objekt DataTable, použijte následující formát:
    dsProducts.DataTableName[RowIndex].ColumnName
    Tato ukázková aplikace RowIndex je pevně 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 

    Vzhledem k tomu, že kolekce řádků je od nuly, když se stránka načte, Všimněte si, že ovládací prvky textové pole se zobrazí názvy produktů a kategorií zboží v šestém řádku DataGrid.
  23. Chcete-li zobrazit všechny výsledky v prvku DataGrid, nastavte vlastnost DataSource DataGrid na nové typové DataSeta zavolejte DataBind():
    DataGrid1.DataSource = tds;DataGrid1.DataBind();

Dokončení kódu (WebForm1.aspx)

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TDS.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label id="Label1" runat="server" >Label</asp:Label>
<asp:DataGrid id="DataGrid1" runat="server" ></asp:DataGrid>
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Label id="Label2" runat="server" >Label</asp:Label>
</form>
</body>
</HTML>

Dokončení kódu (WebForm1.aspx.cs)

using System.Data.SqlClient;
namespace TDS
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
SqlConnection cn = new SqlConnection("server=localhost;uid=sa;pwd=abcd;database=northwind");
SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
dsProducts tds = new dsProducts();

da.Fill(tds, tds.Tables[0].TableName);
TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName;

DataGrid1.DataSource = tds;
DataGrid1.DataBind();

}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.TextBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}


Ověření

Stisknutím klávesy F5 spustíte aplikaci. Prohlížeč zobrazí "Uncle Bob organické Sušené hrušky" produkt textové pole a "Plodiny" v kategorie textové pole. Pod textová pole se zobrazí ovládací prvek DataGrid, který je vyplněn informace o produktu.

Poradce při potížích

  • Obecné objektech DataSet nevyžadují předat TableName , při volání metody výplně . Zadaný objektů DataSet, však vyžadují to, i když přistupujete k DataSet tabulky kolekce indexů místo TableName. Selhání předat zadaný objekt DataSetv TableName vyvolá chybu "Na pozici 0 neexistuje žádný řádek" za běhu. Tento požadavek objektech DataSet také znamená, že nemůžete vytvořit vlastní TableName ale musí projít ten, který je odkazován v zadaný objekt DataSet třída, která je přístupná jako v předcházejícím kódu.
  • Ruční změny provedené ve schématu, který je vygenerován pomocí sady Visual Studio .NET jsou přepsána při změně databáze objekt, původně použitého ke generování schématu a zadali objekt DataSet třída a přetáhněte jej znovu do schématu návrhového zobrazení. Je obvykle vhodnější provádět změny, které je třeba na úrovni Microsoft SQL Server a ke generování nové typové DataSet než ke změně výsledné schéma.

Odkazy

Další informace o práci s zadaný objekt DataSetnaleznete na následujícím webu společnosti Microsoft:


Vlastnosti

ID článku: 320714 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor