Gewusst wie: Erstellen und Verwenden eines typisierten Datasets mit Visual C# .NET

Zusammenfassung

In diesem Artikel wird das Erstellen und Verwenden eines typisierten Datasets in eine kleine Anwendung veranschaulicht. Typisierte DataSets, die DataSet -Klasse erben erstklassige Mitglieder von Datentabellen und Datenspalten, viele Vorteile, die mit der Verwendung der starken Typisierung gibt ein DataSeterstellen.

Voraussetzungen

Der folgenden Liste sind die empfohlene Hardware, Software, Netzwerkinfrastruktur, Qualifikationen und Kenntnisse und Servicepacks, die Sie zum Ausführen dieser Schritte müssen:
  • Microsoft SQL Server 6.5 (oder höher) mit der Datenbank Northwind
Erforderliche Vorkenntnisse:
  • Allgemeine Vertrautheit mit Microsoft SQL Server
  • Allgemeine Vertrautheit mit Microsoft Visual Studio .NET
  • Allgemeine Vertrautheit mit Microsoft ADO.NET
  • Allgemeine Vertrautheit mit Microsoft .NET Web Controls

Typisierte DataSets

Diese Schritte erstellen eine kleine Anwendung mit Visual Studio .NET. Die Anwendung verwendet ein typisiertes DataSet zum Anzeigen der Ergebnisse einer improvisierte SQL-Abfrage in der Datenbank Northwind.
  1. Starten Sie Visual Studio .NET.
  2. Erstellen Sie ein neues Webanwendungsprojekt TDS in Visual C# .NET.
  3. Stellen Sie sicher, dass im Projektmappen-Explorer angezeigt wird. Wenn im Projektmappen-Explorer nicht angezeigt wird, drücken Sie STRG + ALT + L.
  4. Stellen Sie sicher, dass die Datei "WebForm1.aspx" im Editorfenster geöffnet ist. Wenn die Datei nicht geöffnet ist, doppelklicken Sie auf "WebForm1.aspx" im Projektmappen-Explorer zu öffnen.
  5. Klicken Sie unter dem Editorfenster auf Entwurf in die Entwurfsansicht wechseln.
  6. Um die Toolbox zu öffnen, drücken Sie STRG + ALT + X. Klicken Sie in der Toolbox auf Web Forms. Wählen und ziehen Sie in der linken oberen Ecke der Seite folgende: zwei Zeilen jeweils eine Bezeichnung gefolgt von einem Textfeld (rechts neben jedem Etikett positioniert). Fügen Sie unter diesen ein DataGrid auf die gleiche Weise.
  7. Klicken Sie auf das obere Bezeichnungsfeld. Drücken Sie F4, um das Eigenschaftenfenster anzuzeigen. Ändern Sie die Texteigenschaft Produkt. Klicken Sie auf die Beschriftung, und ändern Sie die Texteigenschaft in Kategorie.
  8. Um dem Projekt ein neues DataSet hinzuzufügen, drücken Sie STRG + UMSCHALT + A und klicken Sie in der Liste der Vorlagen auf DataSet . Geben Sie dem DataSet Folgendes: dsProducts.xsd. Beachten Sie, dass die Datei tatsächlich ein XML-Schema. Klicken Sie auf OK. Sie sehen eine blassgelbe Seite wird im Editorfenster.
  9. Um ein typisiertes DataSetzu erstellen, drücken Sie STRG + ALT + S im Server-Explorer öffnen.
  10. Klicken Sie auf Server, klicken Sie auf Computernameklicken Sie SQLServers, klicken Sie auf Servername, klicken Sie auf Northwindund klicken Sie auf Ansichten.
  11. Wählen Sie die Northwind SQL Server-Ansicht Alphabetische Liste der Produkteund ziehen Sie die Ansicht auf die blassgelbe Seite DataSet . Eine visuelle Darstellung von der Sicht erzeugten Ergebnismenge wird auf der Seite angezeigt. Um die XML für die Schemadatei, klicken Sie die Schaltfläche XML unter dem Editorfenster.
  12. Ein Schema basierend auf einer SQL Server-Objekt nun vorhanden ist. Erstellen und ein typisiertes DataSetfüllen, müssen Sie zunächst die Klasse generieren, die dem Schema zugeordnet ist. Mit der rechten Maustaste in der Entwurfsansicht, und stellen Sie sicher, dass die Option DataSet generieren . Wenn es nicht aktiviert ist, wählen sie. Drücken Sie STRG + S zum Speichern des Schemas und der Klasse.
  13. Klicken Sie die neue typisierte DataSet -Klasse, im Projektmappen-Explorer Alle Dateien anzeigen .
  14. Erweitern Sie die Struktur neben dsProducts.xsd. Eine dsProducts.vb-Datei mit der neuen klassenzuordnung Schema angezeigt. Sie sehen auch eine dsProducts.xsx-Datei, die zum Nachverfolgen von Änderungen auf die Dateien.
  15. Schreiben Sie Code für das typisierte DataSetanzuzeigen, doppelklicken auf das Web Form (nicht auf ein Steuerelement). Codebehind des Web Form wird angezeigt, wobei die Einfügemarke im Page_Load -Ereignis.
  16. Um die Klassen enthalten, die im System.Data.SqlClient-Namespace befinden, fügen Sie die folgende using -Anweisung am Anfang der Codebehind:
    using System.Data.SqlClient;
    Hinweis: die Namespaces, die Sie für diese kleines Web Application wird automatisch in das Projekt beim Erstellen einer Web-Anwendung in Visual Studio .NET.

  17. Erstellen Sie ein Verbindungsobjekt in Page_Load -Ereignisprozedur vom Standardkonstruktor der SqlConnection -Klasse die Verbindungszeichenfolge übergeben:
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");
  18. Erstellen Sie ein SqlCommand-Objekt, das dann an das SqlDataAdapter-Objekt übergeben wird. Übergeben Sie eine improvisierte SQL-Anweisung und das neue Connection-Objekt an den SqlCommand-Konstruktor. Das erstere setzt die CommandText -Eigenschaft des neuen SqlCommand-Objekts. Sie können auch den Namen einer gespeicherten Prozedur übergeben.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
  19. Erstellen Sie eine Instanz des SqlDataAdapter-Objekts, das neue SqlCommand-Objekt an den Konstruktor übergeben:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
  20. Nun erstellen Sie die Objekte, die mit der Datenbank verbinden und Daten erforderlich sind. Folgendes ist der Code für das typisierte DataSet. Beachten Sie, dass eine Instanz der DsProducts -Klasse erstellt: Klasse, DsProducts Schema zugeordnet und erbt von der DataSet -Klasse nicht den generischen DataSet -Klasse selbst.
    dsProducts tds = new dsProducts();
  21. Rufen Sie die Fill -Methode des SqlDataAdapter Objekts übergeben und das DataSettypisierte DataTable TableName -Eigenschaft:
    da.Fill(tds, tds.Tables[0].TableName);
  22. Um die stark typisierten Spalten in der typisierten DataSet DataTabledie Text -Eigenschaft der Textfeld-Steuerelemente festzulegen, verwenden Sie Folgendes Format:
    dsProducts.DataTableName[RowIndex].ColumnName
    Für diese Anwendung ist RowIndex 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 

    Da die Rows -Auflistung nullbasiert ist, beim Laden der Seite wird Beachten Sie, dass die Textfeld-Steuerelemente die Produkt- und Namen des Elements in der sechsten Zeile im DataGridangezeigt.
  23. Alle Ergebnisse im DataGridangezeigt, legen Sie die DataSource -Eigenschaft des DataGrid auf neue typisierte DataSetund DataBind()aufrufen:
    DataGrid1.DataSource = tds;DataGrid1.DataBind();

Der vollständige Code aufgelistet (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>

Der vollständige Code aufgelistet (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
}
}


Überprüfung

Drücken Sie F5, um die Anwendung auszuführen. Der Browser zeigt "Uncle Bob's Organic Dried Pears" im Textfeld Produkt und "Produce" im Feld Kategorie . DataGrid mit Produktinformationen gefüllt wird unter den Textfeldern angezeigt.

Problembehandlung:

  • Generische DataSets muss kein Tabellenname beim Aufrufen der Fill -Methode übergeben. Typisierte DataSetsjedoch erforderlich, auch wenn Zugriff auf das DataSetTabellensammlung Indizes statt TableName. Fehler bei der typisierten DataSet Tabellenname löst zur Laufzeit eine Fehlermeldung "Es ist keine Zeile an Position 0" übergeben. Diese Anforderung von typisierten DataSets auch bedeutet, dass Sie Ihre eigenen TableName , aber Sie können nicht die übergeben muss, die in die typisierte DataSet -Klasse verwiesen wird, wie im vorherigen Code zugegriffen wird.
  • Alle manuellen Änderungen auf das Schema, die von Visual Studio .NET generiert werden überschrieben, wenn Sie das Datenbankobjekt ändern, dass Sie zunächst das Schema generiert und DataSet -Klasse typisierten und ziehen Sie es wieder in die Entwurfsansicht des Schemas. Es ist im Allgemeinen vorzuziehen, Änderungen, die Sie auf Ebene der Microsoft SQL Server und generiert ein neues typisiertes DataSet als das resultierende Schema zum Ändern.

Referenzen

Weitere Informationen zum Arbeiten mit einem typisierten DataSetfinden Sie auf der folgenden Microsoft-Website:


Eigenschaften

Artikelnummer: 320714 – Letzte Überarbeitung: 16.01.2017 – Revision: 2

Feedback