Generar un DataSet con establecimiento inflexible de tipos
A partir de un esquema XML que cumple con el estándar del lenguaje de definición de esquemas XML (XSD), es posible generar un DataSet con establecimiento inflexible de tipos mediante la herramienta XSD.exe incluida en .NET Framework SDK.
En el siguiente código se muestra la sintaxis para generar un DataSet con esta herramienta.
xsd.exe /d /l:CS XSDSchemaFileName.xsd /n:XSDSchema.Namespace
En esta sintaxis, la directiva /d
indica a la herramienta que genere un DataSet y /l:
le indica el lenguaje que debe utilizar (por ejemplo, C# o Visual Basic .NET). La directiva /n:
opcional indica a la herramienta que genere también un espacio de nombres para el DataSet denominado XSDSchema.Namespace. El resultado del comando es XSDSchemaFileName.cs, que se puede compilar y utilizar en una aplicación de ADO.NET. El código generado puede compilarse como una biblioteca o un módulo.
En el siguiente código se muestra la sintaxis para compilar el código generado como una biblioteca mediante el compilador de C# (csc.exe).
csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll
La directiva /t:
indica a la herramienta que compile en una biblioteca mientras que las directivas /r:
especifican bibliotecas dependientes necesarias para la compilación. El resultado del comando es XSDSchemaFileName.dll, que se puede pasar al compilador al compilar una aplicación de ADO.NET con la directiva /r:
.
En el siguiente código se muestra la sintaxis para tener acceso al espacio de nombres pasado a XSD.exe en una aplicación de ADO.NET.
Imports XSDSchema.Namespace
[C#]
using XSDSchema.Namespace;
En el siguiente ejemplo de código se utiliza un DataSet con información de tipos denominado CustomerDataSet para cargar una lista de clientes de la base de datos Northwind. Una vez cargados los datos mediante el método Fill, el ejemplo recorre cada cliente de la tabla Customers utilizando el objeto CustomersRow (DataRow) con información de tipos. Esto proporciona acceso directo a la columna CustomerID, en lugar de tener acceso a ella mediante DataColumnCollection.
Dim custDS As CustomerDataSet= New CustomerDataSet()
Dim custCMD As SqlDataAdapter New SqlDataAdapter("SELECT * FROM Customers", _
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
custCMD.Fill(custDS, "Customers")
Dim custRow As CustomerDataSet.CustomersRow
For Each custRow In custDS.Customers
Console.WriteLine(custRow.CustomerID)
Next
[C#]
CustomerDataSet custDS = new CustomerDataSet();
SqlDataAdapter custCMD = new SqlDataAdapter("SELECT * FROM Customers",
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
custCMD.Fill(custDS, "Customers");
foreach(CustomerDataSet.CustomersRow custRow in custDS.Customers)
Console.WriteLine(custRow.CustomerID);
A continuación se muestra el esquema XML utilizado para el ejemplo.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="CustomerDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="CustomerDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Vea también
Trabajar con DataSet con información de tipos | Crear y utilizar DataSets | DataColumnCollection (Clase) | DataSet (Clase)