Generazione di un DataSet tipizzato in modo sicuro
Dato uno schema XML conforme allo standard XSD (Schema Definition Language), è possibile generare un DataSet tipizzato in modo sicuro utilizzando lo strumento XSD.exe fornito con l'SDK di .NET Framework.
Nell'esempio seguente viene mostrata la sintassi per la generazione di un DataSet con questo strumento.
xsd.exe /d /l:CS XSDSchemaFileName.xsd /n:XSDSchema.Namespace
In questa sintassi la direttiva /d
consente di richiedere allo strumento la generazione di un DataSet e /l:
consente di fornire allo strumento informazioni relative al linguaggio da utilizzare (ad esempio C# o Visual Basic .NET). La direttiva facoltativa /n:
consente di richiedere allo strumento anche la generazione di uno spazio dei nomi per il DataSet denominato XSDSchema.Namespace. L'output del comando è costituito dal file XSDSchemaFileName.cs, che può essere compilato e utilizzato in un'applicazione ADO.NET. È possibile compilare il codice generato come libreria o modulo.
Nel codice seguente viene mostrata la sintassi per la compilazione del codice generato come libreria utilizzando il compilatore C# (csc.exe).
csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll
La direttiva /t:
consente di richiedere allo strumento la compilazione in una libreria e la direttiva /r:
consente di specificare le librerie dipendenti necessarie per la compilazione. L'output del comando è costituito dal file XSDSchemaFileName.dll, che può essere passato al compilatore quando si compila un'applicazione ADO.NET con la direttiva /r:
.
Nel codice seguente viene mostrata la sintassi utilizzata per l'accesso allo spazio dei nomi passato a XSD.exe in un'applicazione ADO.NET.
Imports XSDSchema.Namespace
[C#]
using XSDSchema.Namespace;
Nel seguente esempio di codice un DataSet tipizzato denominato CustomerDataSet viene utilizzato per caricare un elenco di clienti dal database Northwind. Una volta caricati i dati utilizzando il metodo Fill, l'esempio scorre in ciclo ogni cliente nella tabella Customers tramite l'oggetto tipizzato CustomersRow (DataRow). Questa operazione consente di accedere direttamente alla colonna CustomerID, anziché accedere a tale colonna tramite 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);
Di seguito viene riportato lo schema XML utilizzato per l'esempio.
<?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>
Vedere anche
Utilizzo di un DataSet tipizzato | Creazione e utilizzo di DataSet | Classe DataColumnCollection | Classe DataSet