Esta documentación está archivada y no tiene mantenimiento.

DataSet (Clase)

Actualización: noviembre 2007

Representa una caché de memoria interna de datos.

Espacio de nombres:  System.Data
Ensamblado:  System.Data (en 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
public class DataSet extends MarshalByValueComponent implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable

DataSet, que es una caché de memoria interna de datos recuperados de un origen de datos, representa un componente fundamental de la arquitectura de ADO.NET. DataSet está compuesto por una colección de objetos DataTable que se pueden relacionar entre ellos mediante objetos DataRelation. También se puede imponer la integridad de los datos de DataSet mediante los objetos UniqueConstraint y ForeignKeyConstraint. Para obtener información más detallada sobre el trabajo con objetos DataSet, vea DataSets, DataTables y DataViews (ADO.NET).

Los objetos DataTable contienen los datos, mientras que DataRelationCollection permite navegar en la jerarquía de la tabla. Las tablas están incluidas en un DataTableCollection al que se obtiene acceso a través de la propiedad Tables. Al obtener acceso a los objetos DataTable, hay que tener en cuenta que éstos distinguen entre mayúsculas y minúsculas condicionalmente. Por ejemplo, si un objeto DataTable se denomina "mydatatable" y otro "Mydatatable", la cadena que se utilice para buscar una de las tablas se considerará que distingue entre mayúsculas y minúsculas. Sin embargo, si existe "mydatatable" pero no existe "Mydatatable", se considerará que la cadena de búsqueda no distingue entre mayúsculas y minúsculas. Para obtener más información sobre el trabajo con los objetos DataTable, vea Crear DataTable (ADO.NET).

Un DataSet puede leer y escribir datos y esquemas como documentos XML. Los datos y esquemas pueden transportarse, a continuación, a través de HTTP y cualquier aplicación puede utilizarlos en cualquier plataforma que sea compatible con XML. Los esquemas se pueden guardar como esquemas XML mediante el método WriteXmlSchema, y tanto los esquemas como los datos se pueden guardar mediante el método WriteXml. Hay que utilizar el método ReadXml para leer un documento XML que incluya esquema y datos.

En una implementación normal de varios niveles, los pasos de creación y actualización de un DataSet y, a su vez, de actualización de los datos originales, son los siguientes:

  1. Construir y llenar cada DataTable de un DataSet con datos desde un origen de datos mediante DataAdapter.

  2. Cambiar los datos de los objetos DataTable individuales mediante la adición, actualización o eliminación de objetos DataRow.

  3. Llamar al método GetChanges para crear un segundo DataSet que sólo incorpore los cambios realizados en los datos.

  4. Llame al método Update de DataAdapter, pasando el segundo DataSet como argumento.

  5. Se invoca el método Merge para combinar los cambios del segundo DataSet con el primero.

  6. Invocar al método AcceptChanges de DataSet. O bien, invocar al método RejectChanges para cancelar los cambios.

bwy42y0e.alert_note(es-es,VS.90).gifNota:

Los objetos DataSet y DataTable se heredan de MarshalByValueComponent y admiten la interfaz ISerializable para obtener acceso a ellos de forma remota. Éstos son los únicos objetos ADO.NET a los que se puede tener acceso remoto.

bwy42y0e.alert_note(es-es,VS.90).gifNota:

Las clases heredadas de DataSet no son finalizadas por el recolector de elementos no utilizados, porque se ha suprimido el finalizador en DataSet. La clase derivada puede llamar al método ReRegisterForFinalize en su constructor para que el recolector de elementos no utilizados pueda finalizar la clase.

TopicLocation
Cómo: Crear un conjunto de datos con tipoAcceso a datos en Visual Studio
Tutorial: Mostrar datos jerárquicos en un control TreeViewGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Crear un conjunto de datos con tipoAcceso a datos en Visual Studio
Tutorial: Mostrar datos jerárquicos en un control TreeViewGenerar aplicaciones Web ASP .NET en Visual Studio
Tutorial: Mostrar datos jerárquicos en un control TreeViewGenerar aplicaciones Web ASP .NET en Visual Studio

El ejemplo siguiente se compone de varios métodos que, combinados, crean y rellenan un objeto DataSet a partir de la base de datos 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";
        }
    }
}


Este tipo es seguro para operaciones de lectura multiproceso. Debe sincronizar cualquier operación de escritura.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 1.0
Mostrar: