(0) exportieren Drucken
Alle erweitern

DataSet-Klasse

Stellt einen Datencache im Arbeitsspeicher dar.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

[SerializableAttribute] 
public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable, ISupportInitializeNotification, 
	ISupportInitialize, ISerializable
/** @attribute SerializableAttribute() */ 
public class DataSet extends MarshalByValueComponent implements IListSource, IXmlSerializable, 
	ISupportInitializeNotification, ISupportInitialize, ISerializable
SerializableAttribute 
public class DataSet extends MarshalByValueComponent implements IListSource, IXmlSerializable, 
	ISupportInitializeNotification, ISupportInitialize, ISerializable

Das DataSet, ein aus einer Datenquelle abgerufener Datencache im Arbeitsspeicher, ist eine Hauptkomponente der ADO.NET-Architektur. Das DataSet besteht aus einer Auflistung von DataTable-Objekten, die Sie mit DataRelation-Objekten aufeinander beziehen können. Sie können die Datenintegrität im DataSet auch mithilfe des UniqueConstraint-Objekts und des ForeignKeyConstraint-Objekts erzwingen. Weitere Informationen über das Arbeiten mit DataSet-Objekten finden Sie unter Verwenden von DataSets in ADO.NET.

Während DataTable-Objekte die Daten enthalten, ermöglicht Ihnen DataRelationCollection das Navigieren in der Tabellenhierarchie. Die Tabellen befinden sich in einer DataTableCollection, auf die Sie über die Tables-Eigenschaft zugreifen. Beachten Sie beim Zugriff auf DataTable-Objekte, dass für diese die Groß- bzw. Kleinschreibung bedingt beachtet wird. Wenn z. B. eine DataTable "mydatatable" und eine weitere "Mydatatable" benannt ist, wird in einer Zeichenfolge zum Suchen einer dieser Tabellen die Groß- und Kleinschreibung unterschieden. Wenn jedoch "mydatatable", aber nicht "Mydatatable" vorhanden ist, wird in der Suchzeichenfolge die Groß- und Kleinschreibung nicht unterschieden. Weitere Informationen über das Arbeiten mit DataTable-Objekten finden Sie unter Erstellen einer DataTable.

Ein DataSet kann Daten sowie das Schema als XML-Dokumente lesen und schreiben. Die Daten und das Schema können dann über HTTP übertragen und von sämtlichen Anwendungen auf allen XML-fähigen Plattformen verwendet werden. Sie können das Schema mit der WriteXmlSchema-Methode als XML-Schema speichern. Das Schema und die Daten können mithilfe der WriteXml-Methode gespeichert werden. Verwenden Sie zum Lesen eines XML-Dokuments mit Schema und Daten die ReadXml-Methode.

In einer typischen Implementierung mit mehreren Ebenen werden die folgenden Schritte zum Erstellen und Aktualisieren eines DataSet und zum anschließenden Aktualisieren der ursprünglichen Daten ausgeführt:

  1. Erstellen Sie mithilfe eines DataAdapter jede DataTable in einem DataSet, und füllen Sie sie mit Daten aus einer Datenquelle.

  2. Ändern Sie die Daten in einzelnen DataTable-Objekten, indem Sie DataRow-Objekte hinzufügen, aktualisieren oder löschen.

  3. Rufen Sie die GetChanges-Methode auf, um ein zweites DataSet zu erstellen, das nur die Änderungen an den Daten darstellt.

  4. Rufen Sie die Update-Methode von DataAdapter auf, und übergeben Sie das zweite DataSet als Argument.

  5. Rufen Sie die Merge-Methode auf, um die Änderungen aus dem zweiten DataSet mit dem ersten zusammenzuführen.

  6. Rufen Sie AcceptChanges für das DataSet auf. Sie können auch RejectChanges aufrufen, um die Änderungen zu verwerfen.

HinweisHinweis

Das DataSet-Objekt und das DataTable-Objekt erben von MarshalByValueComponent und unterstützen die ISerializable-Schnittstelle für Remoting. Remoting kann nur für diese ADO.NET-Objekte ausgeführt werden.

Im folgenden Beispiel erstellen und füllen mehrere kombinierte Methoden ein DataSet aus der Datenbank Northwind.

using System;
using System.Data;
using System.Data.SqlClient;

namespace Microsoft.AdoNet.DataSetDemo
{
    class NorthwindDataSet
    {
        static void Main()
        {
            string connectionString = GetConnectionString();
            ConnectToData(connectionString);
        }

        private static void ConnectToData(string connectionString)
        {
            //Create a SqlConnection to the Northwind database.
            using (SqlConnection connection =
                       new SqlConnection(connectionString))
            {
                //Create a SqlDataAdapter for the Suppliers table.
                SqlDataAdapter adapter = new SqlDataAdapter();

                // A table mapping names the DataTable.
                adapter.TableMappings.Add("Table", "Suppliers");

                // Open the connection.
                connection.Open();
                Console.WriteLine("The SqlConnection is open.");

                // Create a SqlCommand to retrieve Suppliers data.
                SqlCommand command = new SqlCommand(
                    "SELECT SupplierID, CompanyName FROM dbo.Suppliers;",
                    connection);
                command.CommandType = CommandType.Text;

                // Set the SqlDataAdapter's SelectCommand.
                adapter.SelectCommand = command;

                // Fill the DataSet.
                DataSet dataSet = new DataSet("Suppliers");
                adapter.Fill(dataSet);

                // Create a second Adapter and Command to get
                // the Products table, a child table of Suppliers. 
                SqlDataAdapter productsAdapter = new SqlDataAdapter();
                productsAdapter.TableMappings.Add("Table", "Products");

                SqlCommand productsCommand = new SqlCommand(
                    "SELECT ProductID, SupplierID FROM dbo.Products;",
                    connection);
                productsAdapter.SelectCommand = productsCommand;

                // Fill the DataSet.
                productsAdapter.Fill(dataSet);

                // Close the connection.
                connection.Close();
                Console.WriteLine("The SqlConnection is closed.");

                // Create a DataRelation to link the two tables
                // based on the SupplierID.
                DataColumn parentColumn =
                    dataSet.Tables["Suppliers"].Columns["SupplierID"];
                DataColumn childColumn =
                    dataSet.Tables["Products"].Columns["SupplierID"];
                DataRelation relation =
                    new System.Data.DataRelation("SuppliersProducts",
                    parentColumn, childColumn);
                dataSet.Relations.Add(relation);
                Console.WriteLine(
                    "The {0} DataRelation has been created.",
                    relation.RelationName);
            }
        }

        static private string GetConnectionString()
        {
            // To avoid storing the connection string in your code, 
            // you can retrieve it from a configuration file.
            return "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
        }
    }
}

Dieser Typ ist bei Multithread-Lesevorgängen sicher. Sie müssen alle Schreibvorgänge synchronisieren.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2014 Microsoft