Erstellen und Verwenden eines typisierten DataSets mit Visual C# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 320714 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
320714 HOW TO: Create and Use a Typed DataSet by Using Visual C# .NET
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt die Vorgehensweise zur Erstellung und Verwendung eines typisierten DataSets in einer kleinen Webanwendung. Typisierte DataSets, die von der Klasse DataSet erben, erstellen Member der ersten Klasse der DataTables und DataColumns eines DataSets. Daraus resultieren die zahlreichen Vorteile, die eine starke Typisierung bietet.

Voraussetzungen

Im Folgenden werden die empfohlene Hardware, Software und Netzwerkinfrastruktur, die erforderlichen Fähigkeiten und Kenntnisse sowie die benötigten Service Packs für diese Vorgehensweise aufgeführt:
  • Microsoft SQL Server 6.5 (oder höher) mit 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-Steuerelementen

Typisierte DataSets

Gehen Sie folgendermaßen vor, um mit Visual Studio .NET eine kleine Webanwendung zu erstellen. Die Webanwendung verwendet ein typisiertes DataSet, um die Ergebnisse einer improvisierten Abfrage in der Datenbank "Northwind" anzuzeigen.
  1. Starten Sie Visual Studio .NET.
  2. Erstellen Sie ein neues Webanwendungsprojekt namens TDS in Visual C# .NET.
  3. Vergewissern Sie sich, dass der Projektmappen-Explorer angezeigt wird. Wenn er nicht angezeigt wird, drücken Sie die Tasten [STRG]+[ALT]+[L].
  4. Vergewissern Sie sich, dass die Datei "WebForm1.aspx" im Editorfenster geöffnet ist. Wenn das nicht der Fall ist, doppelklicken Sie im Projektmappen-Explorer auf WebForm1.aspx, um die Datei zu öffnen.
  5. Klicken Sie unter dem Editorfenster auf Entwurf, um in die Entwurfsansicht zu wechseln.
  6. Drücken Sie [STRG]+[ALT]+[X], um die Toolbox zu öffnen. Klicken Sie in der Toolbox auf Web Forms. Markieren Sie je zwei Zeilen eines Bezeichnungsfeldes, gefolgt von einem Textfeld (das rechts von den einzelnen Bezeichnungsfeldern positioniert ist). Ziehen Sie sie in die obere Ecke der Seite. Fügen Sie darunter auf die gleiche Weise ein DataGrid hinzu.
  7. Klicken Sie auf das obere Bezeichnungsfeld. Drücken Sie die Taste F4, um das Fenster Eigenschaften anzuzeigen. Ändern Sie die Texteigenschaft in Produkt. Klicken Sie auf das andere Bezeichnungsfeld, und ändern Sie seine Texteigenschaft in Kategorie.
  8. Drücken Sie [STRG]+[UMSCHALT]+[A], um ein neues DataSet zum Projekt hinzuzufügen, und klicken Sie anschließend in der Liste der Vorlagen auf DataSet. Geben Sie dem DataSet den Namen dsProducts.xsd. Die Datei ist eigentlich ein XML-Schema. Klicken Sie auf OK. Eine blassgelbe Seite wird im Editorfenster angezeigt.
  9. Drücken Sie [STRG]+[ALT]+[S], um den Server-Explorer zu öffnen und ein typisiertes DataSet zu erstellen.
  10. Klicken Sie auf Server, auf Computername, auf SQLServers, auf Servername, auf Northwind und anschließend auf Sichten.
  11. Markieren Sie die Northwind-SQL Server-Sicht Alphabetical list of products (Alphabetische Produktliste), und ziehen Sie die Ansicht auf die blassgelbe DataSet-Seite. Eine visuelle Darstellung der von der Sicht erzeugten Ergebnismenge wird auf der Seite angezeigt. Klicken Sie auf die Schaltfläche XML unter dem Editorfenster, um die XML für die Schemadatei anzuzeigen.
  12. Ein Schema, das auf einem SQL Server-Objekt basiert, ist jetzt vorhanden. Um ein typisiertes DataSet zu erstellen und zu füllen, müssen Sie zunächst die Klasse generieren, die dem Schema zugeordnet wird. Klicken Sie mit der rechten Maustaste auf die Entwurfsansicht, und vergewissern Sie sich, dass die Option DataSet generieren aktiviert ist. Wenn dies nicht der Fall ist, aktivieren Sie die Option. Drücken Sie [STRG]+[S], um das Schema zu speichern und die Klasse zu generieren.
  13. Klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen, um die neue typisierte DataSet-Klasse anzuzeigen.
  14. Erweitern Sie die Struktur neben dsProducts.xsd. Eine Datei "dsProducts.vb" wird angezeigt, die die neue Klassenzuordnung zum Schema enthält. Außerdem wird eine Datei "dsProducts.xsx" angezeigt, die zur Verfolgung von Änderungen an den Dateien verwendet wird.
  15. Doppelklicken Sie direkt auf das Web Form (nicht auf ein Web-Steuerelement), um Code zum Anzeigen des typisierten DataSets zu schreiben. Das Codebehind des Web Form wird angezeigt, und die Einfügemarke befindet sich im Ereignis Page_Load.
  16. Fügen Sie die folgende using-Anweisung am Anfang des Codebehinds hinzu, um die Klassen einzubeziehen, die im Namespace "System.Data.SqlClient" liegen:
    using System.Data.SqlClient;
    					
    Hinweis: Die anderen Namespaces, die Sie für diese kleine Webanwendung benötigen, werden automatisch im Projekt referenziert, wenn Sie eine Webanwendung in Visual Studio .NET erstellen.

  17. Erstellen Sie in der Ereignisprozedur Page_Load ein Connection-Objekt, indem Sie die Verbindungszeichenfolge an den Standardkonstruktor der Klasse SqlConnection ü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, und übergeben Sie das neue SQLCommand-Objekt an den Konstruktor:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    					
  20. Jetzt erstellen Sie die Objekte, die benötigt werden, um die Verbindung zur Datenbank herzustellen und Daten zurückzugeben. Der folgende Code ist der Code für das typisierte DataSet. Beachten Sie, dass eine Instanz der Klasse dsProducts erstellt wird: Diese Klasse wird dem Schema "dsProducts" zugeordnet und erbt von der Klasse DataSet, nicht von der generischen DataSet-Klasse selbst.
    dsProducts tds = new dsProducts();
    					
  21. Rufen Sie die Methode Fill des SqlDataAdapter-Objekts auf. Übergeben Sie dabei das typisierte DataSet-Objekt und die typisierte Eigenschaft DataTable TableName des DataSets:
    da.Fill(tds, tds.Tables[0].TableName);
    					
  22. Verwenden Sie folgendes Format, um die Eigenschaft Text der Textfeld-Steuerelemente für die stark typisierten Spalten in der DataTable des typisierten DataSets festzulegen:
    dsProducts.DataTableName[RowIndex].ColumnName
    						
    Für diese Beispielanwendung ist der Zeilenindex hart kodiert als 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
    TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 
    						
    Da die Auflistung Rows beim Laden der Seite nullbasiert ist, zeigen die Textfeld-Steuerelemente die Produkt- und Kategoriebezeichnungen des Elements in der sechsten Zeile des DataGrids an.
  23. Setzen Sie die Eigenschaft DataSource des DataGrids auf das neue typisierte DataSet und rufen Sie DataBind() auf, um alle Ergebnisse im DataGrid anzuzeigen:
    DataGrid1.DataSource = tds;
    DataGrid1.DataBind();
    					

Komplette Codeauflistung (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>
				

Komplette Codeauflistung (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 Webanwendung auszuführen. Der Browser zeigt "Uncle Bob's Organic Dried Pears" im Textfeld Produkt und "Produce" im Textfeld Kategorie an. Ein DataGrid, das mit Produktinformationen gefüllt ist, wird unter den Textfeldern angezeigt.

Problembehandlung

  • Bei generischen DataSets ist es nicht erforderlich, beim Aufruf der Methode Fill einen TableName zu übergeben. Bei typisierten DataSets ist dies jedoch erforderlich, selbst dann, wenn Sie über Indizes auf die Table-Auflistung des DataSets zugreifen, anstatt den TableName zu verwenden. Wenn der TableName des typisierten DataSets nicht übergeben wird, wird zur Laufzeit ein Fehler "An der Position {0} befindet sich keine Zeile" erzeugt. Diese Anforderung von typisierten DataSets bedeutet außerdem, dass Sie keinen eigenen TableName wählen können, sondern den Namen verwenden müssen, auf den in der typisierten DataSet-Klasse verwiesen wird. Der Zugriff erfolgt wie im vorhergehenden Code.
  • Manuelle Änderungen, die Sie an dem von Visual Studio .NET erzeugten Schema vornehmen, werden überschrieben, wenn Sie das Datenbankobjekt ändern, das Sie anfangs zum Generieren des Schemas und der typisierten DataSet-Klasse verwendet haben, und es erneut in die Entwurfsansicht des Schemas ziehen. Es ist allgemein vorzuziehen, die erforderlichen Änderungen auf Microsoft SQL Server-Ebene durchzuführen und ein neues typisiertes DataSet zu erzeugen, statt das resultierende Schema zu ändern.

Informationsquellen

Weitere Informationen zum Arbeiten mit einem typisierten DataSet finden Sie auf der folgenden Microsoft-Website:
http://msdn2.microsoft.com/de-de/library/esbykkzb(VS.80).aspx


Eigenschaften

Artikel-ID: 320714 - Geändert am: Montag, 25. Juni 2007 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbhowtomaster KB320714
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com