Share via


Scrittura di una classe di supporto per compilare il DataSet

Lo schema DataSet appena creato per la tabella Cliente è una struttura di dati. In fase di esecuzione, è necessario il codice per compilare la struttura DataSet con dati provenienti dal database. In questa sezione viene descritto come creare una classe di supporto per compilare il DataSet con i dati.

Per creare una classe di supporto per compilare il DataSet con i dati

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome del progetto in grassetto, selezionare Aggiungi, quindi scegliere Aggiungi nuovo elemento.

  2. Nell'elenco Modelli Visual Studio installati della finestra di dialogo Aggiungi nuovo elemento, selezionare Classe.

  3. Nel campo Nome, inserire "DataSetConfiguration", quindi fare clic su Aggiungi.

    NoteNota

    Se viene visualizzata una finestra di dialogo in cui si richiede se salvare la classe in una directory denominata "Codice", fare clic su Sì.

  4. Sopra la firma della classe, all'inizio della classe, aggiungere una dichiarazione "Imports"[Visual Basic] o "using"[C#] per gli spazi dei nomi System.Data e System.Data.OleDb.

    Imports System.Data
    Imports System.Data.OleDb
    
    using System.Data;
    using System.Data.OleDb;
    
  5. All'inizio della classe, creare una costante denominata CONNECTION_STRING per contenere la stringa di connessione al database di esempio Xtreme.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\Aa983431.alert_note(it-it,VS.90).gif" alt="Note" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Il codice seguente utilizza il percorso del database di esempio per Crystal Reports per Visual Studio 2005. Per verificare l'esattezza del percorso della directory di file del database Xtreme.mdb, vedere <a href="ms225530(v=vs.90).md">Posizione del database di esempio Xtreme</a>.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const CONNECTION_STRING As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programmi\Microsoft Visual Studio 8\Crystal Reports\Samples\it\Database\xtreme.mdb"
```

``` csharp
private const string CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programmi\Microsoft Visual Studio 8\Crystal Reports\Samples\it\Database\xtreme.mdb";
```
  1. Sotto la prima costante, creare una seconda costante denominata QUERY_STRING per contenere la stringa di query del database.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\Aa983431.alert_note(it-it,VS.90).gif" alt="Note" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Questa semplice stringa di query seleziona tutte le colonne, ma nessun criterio. Per il database di esempio Xtreme, la stringa restituirà solo una piccola quantità di dati. Tuttavia, nella maggior parte dei casi si consiglia di limitare la query includendo una clausola WHERE e selezionando un numero limitato di colonne.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const QUERY_STRING As String = "SELECT * FROM CUSTOMER"
```

``` csharp
private const string QUERY_STRING = "SELECT * FROM CUSTOMER";
```
  1. Sotto la seconda costante, creare una terza costante denominata DATATABLE_NAME per il nome dell'oggetto DataTable da compilare nel DataSet.
Nel passaggio seguente viene descritto come creare una costante DIRECTORY\_FILE\_PATH. Questa costante è richiesta solo se si sta creando un sito Web in Visual Studio 2005. In caso contrario, saltare questo passaggio.

``` vb
Private Const DATATABLE_NAME As String = "Customer"
```

``` csharp
private const string DATATABLE_NAME = "Customer";
```
  1. Sotto la terza costante, crearne una quarta denominata DIRECTORY_FILE_PATH per fare riferimento alla posizione del percorso della directory del file xsd.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\Aa983431.alert_note(it-it,VS.90).gif" alt="Note" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Nel codice seguente è specificato un percorso per un sito Web.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const DIRECTORY_FILE_PATH As String = "C:\WebSites\VB_Web_Data_DataSets\\"
```

``` csharp
private const string DIRECTORY_FILE_PATH = @"C:\WebSites\CS_Web_Data_DataSets\\";
```

Per creare una proprietà che compili il DataSet

  1. Creare una proprietà di sola lettura denominata CustomerDataSet che restituisca un'istanza DataSet. Fornire al metodo un modificatore "Shared"[Visual Basic] o "static"[C#], in modo che la classe e la proprietà possano essere chiamate direttamente senza la necessità di creare istanze.
``` vb
Public Shared ReadOnly Property CustomerDataSet() As DataSet
Get

End Get
End Property
```

``` csharp
public static DataSet CustomerDataSet
{
get
{

}
}
```
  1. Sono disponibili due opzioni: una per l'utilizzo con la classe DataSet tipizzata in modo sicuro (disponibile con progetti Windows.) e una per l'utilizzo con la classe DataSet generica (disponibile per i siti Web).

    • Per i progetti che utilizzano la classe DataSet tipizzata in modo sicuro, all'interno della clausola get della proprietà CustomerDataSet, dichiarare e creare un'istanza della classe CustomerDataSetSchema (la classe DataSet con tipizzazione forte generata dallo schema DataSet nella sezione precedente).

      Dim myDataSet As CustomerDataSetSchema = New
      CustomerDataSetSchema()
      
      CustomerDataSetSchema dataSet = new CustomerDataSetSchema();
      
    • Per i progetti che utilizzano la classe DataSet generica nei siti Web Visual Studio, nella clausola get della proprietà CustomerDataSet, dichiarare e creare un'istanza di una classe DataSet, quindi applicare lo schema XML all'istanza DataSet. In altre parole, passare il percorso del file della directory CustomerDataSetSchema.xsd come parametro stringa al metodo ReadXmlSchema() dell'istanza DataSet.

      Dim myDataSet As DataSet = New DataSet()
      myDataSet.ReadXmlSchema(DIRECTORY_FILE_PATH & "XMLSchema.xsd")
      
      DataSet dataSet = new DataSet();
      dataSet.ReadXmlSchema(DIRECTORY_FILE_PATH + "XMLSchema.xsd");
      
  2. Dichiarare e creare un'istanza della classe OleDbConnection e passarvi la costante CONNECTION_STRING come parametro di metodo.

    Dim myOleDbConnection As OleDbConnection = New OleDbConnection(CONNECTION_STRING)
    
    OleDbConnection oleDbConnection = new OleDbConnection(CONNECTION_STRING);
    
  3. Dichiarare e creare un'istanza della classe OleDbDataAdapter e passarvi la costante QUERY_STRING e l'istanza OleDbConnection come parametri di metodo.

    Dim myOleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(QUERY_STRING, myOleDbConnection)
    
    OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(QUERY_STRING, oleDbConnection);
    
  4. Chiamare il metodo Fill() dell'istanza OleDbDataAdapter e passargli l'istanza CustomerDataSetSchema e la costante DATATABLE_NAME.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\Aa983431.alert_note(it-it,VS.90).gif" alt="Note" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Il metodo Fill() compila l'oggetto DataTable specificato, all'interno dell'istanza DataSet, con i dati recuperati dal database.</p></td>
</tr>
</tbody>
</table>

``` vb
myOleDbDataAdapter.Fill(myDataSet, DATATABLE_NAME)
```

``` csharp
oleDbDataAdapter.Fill(dataSet, DATATABLE_NAME);
```
  1. Per completare la proprietà, restituire l'istanza DataSet.
``` vb
Return myDataSet
```

``` csharp
return dataSet;
```

La proprietà CustomerDataSet viene creata e può essere chiamata da qualsiasi punto del progetto.