Esempio di provider di dati .NET Framework

Negli argomenti precedenti sono disponibili collegamenti ad argomenti aggiuntivi contenenti codice di esempio da utilizzare per la creazione di un provider di dati .NET Framework di esempio. È possibile copiare tale codice in file di testo vuoti, salvare i file in una directory e compilarli in una libreria sulla base delle istruzioni disponibili nella sezione "Compilazione del provider di dati .NET Framework di esempio" più avanti in questo argomento.

Nella tabella che segue viene riportato un elenco dei file di codice di esempio disponibili per la creazione di un provider di dati .NET Framework di esempio.

Nome file Descrizione
TemplateConnection.vb

TemplateConnection.cs

Contiene codice di esempio per la creazione di un oggetto Connection. Per ulteriori informazioni, vedere Implementazione di una connessione.
TemplateTransaction.vb

TemplateTransaction.cs

Contiene codice di esempio per la creazione di un oggetto Transaction. Per ulteriori informazioni, vedere Implementazione di una connessione.
TemplateCommand.vb

TemplateCommand.cs

Contiene codice di esempio per la creazione di un oggetto Command. Per ulteriori informazioni, vedere Implementazione di un comando.
TemplateParameter.vb

TemplateParameter.cs

Contiene codice di esempio per la creazione di un oggetto Parameter che fa parte dell'insieme Command.Parameters. Per ulteriori informazioni, vedere Implementazione di un comando.
TemplateParameterCollection.vb

TemplateParameterCollection.cs

Contiene codice di esempio per la creazione di un oggetto ParameterCollection da utilizzare come proprietà Command.Parameters. Per ulteriori informazioni, vedere Implementazione di un comando.
TemplateDataReader.vb

TemplateDataReader.cs

Contiene codice di esempio per la creazione di un oggetto DataReader. Per ulteriori informazioni, vedere Implementazione di un DataReader.
TemplateDataAdapter.vb

TemplateDataAdapter.cs

Contiene codice di esempio per la creazione di un oggetto DataAdapter. Per ulteriori informazioni, vedere Implementazione di un DataAdapter.
SampleDb.vb

SampleDb.cs

Contiene codice di esempio che consente di simulare una query e di aggiornare un'origine dati. Per ulteriori informazioni, vedere la sezione "SampleDb" più avanti in questo argomento.

Compilazione del provider di dati .NET Framework di esempio

Una volta creati i file dal codice di esempio fornito e salvati tali file in una cartella, eseguire il comando riportato di seguito per creare il provider di dati .NET Framework di esempio come file DotNetDataProviderTemplate.dll. È quindi possibile passare tale file come riferimento a un programma che utilizza lo spazio dei nomi DotNetDataProviderTemplate.

Per compilare la versione Visual Basic del provider di dati .NET Framework di esempio, è possibile utilizzare il comando riportato di seguito.

vbc /t:library /out:DotNetDataProviderTemplate.dll *.vb /r:system.dll /r:system.data.dll

Per compilare la versione C# del provider di dati .NET Framework di esempio, è possibile utilizzare il comando riportato di seguito.

csc /t:library /out:DotNetDataProviderTemplate.dll *.cs /r:system.dll /r:system.data.dll

Utilizzo del provider di dati .NET Framework di esempio

Una volta compilato il provider di dati .NET Framework nel file DotNetDataProviderTemplate.dll, sarà possibile scrivere un programma che utilizzi lo spazio dei nomi DotNetDataProviderTemplate.

Nel codice di esempio seguente è riportato un programma che consente la creazione di istanze dei DataReader e DataAdapter di esempio.

Imports System
Imports System.Data
Imports DotNetDataProviderTemplate
Imports Microsoft.VisualBasic

Class Sample
  Public Shared Sub Main()
    testReader()
    testAdapter()
  End Sub

  Public Shared Sub testReader()
    Dim conn As TemplateConnection = New TemplateConnection()
    conn.Open()
      
    Dim cmd As TemplateCommand = New TemplateCommand("select * from customers", conn)

    Dim reader As TemplateDataReader = cmd.ExecuteReader()

    Do while (reader.Read())
      Console.Write(reader.GetInt32(0) & vbTab)
      Console.Write(reader.GetString(1) & vbTab)
      Console.Write(reader.GetInt32(2))
      Console.WriteLine()
    Loop
    reader.Close()
      
    conn.Close()
  End Sub

  Public Shared Sub testAdapter()
    Dim conn As TemplateConnection = New TemplateConnection()
    Dim adapter As TemplateDataAdapter = New TemplateDataAdapter()

    adapter.SelectCommand = New TemplateCommand("select * from customers", conn)

    adapter.UpdateCommand = New TemplateCommand("update name, orderid values(@name, @orderid) where id = @id", conn)

    Dim parm As TemplateParameter = New TemplateParameter("@name", DbType.String, "name")
    adapter.UpdateCommand.Parameters.Add(parm)

    parm = New TemplateParameter("@orderid", DbType.Int32, "orderid")
    adapter.UpdateCommand.Parameters.Add(parm)

    parm = New TemplateParameter("@id", DbType.Int32, "id")
    adapter.UpdateCommand.Parameters.Add(parm)

    Dim ds As DataSet = New DataSet
    adapter.Fill(ds, "Customers")

    Console.WriteLine("------------------------")
    Console.WriteLine("DataSet contents after Fill:")
    printDataSet(ds)

    Console.WriteLine("------------------------")
    ds.Tables("Customers").Rows(2)("orderid") = 4199
    adapter.Update(ds, "Customers")

    Console.WriteLine("------------------------")
    Console.WriteLine("DataSet contents after Update:")
    printDataSet(ds)
    Console.WriteLine("------------------------")
  End Sub

  Public Shared Sub printDataSet(ds As DataSet)
    Dim table As DataTable
    Dim col As DataColumn
    Dim row As DataRow
    Dim i As Integer

    For Each table in ds.Tables
      For Each col in table.Columns
        Console.Write(col.ColumnName & vbTab & vbTab)
      Next
      Console.WriteLine()

      For Each row in table.Rows  
        For i = 0 To table.Columns.Count - 1  
          Console.Write(row(i).ToString() & vbTab & vbTab)
        Next
        Console.WriteLine()
      Next
    Next
  End Sub
End Class
[C#]
using System;
using System.Data;
using DotNetDataProviderTemplate;

class Sample
{
  static void Main()
  {
    testReader();
    testAdapter();
  }

  static void testReader()
  {
    TemplateConnection conn = new TemplateConnection();
    conn.Open();
      
    TemplateCommand cmd = new TemplateCommand("select * from customers", conn);

    IDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
      Console.Write(reader.GetInt32(0) + "\t");
      Console.Write(reader.GetString(1) + "\t");
      Console.Write(reader.GetInt32(2));
      Console.WriteLine();
    }
    reader.Close();
    
    conn.Close();
  }

  static void testAdapter()
  {
    TemplateConnection  conn = new TemplateConnection();
    TemplateDataAdapter  adapter = new TemplateDataAdapter();

    adapter.SelectCommand = new TemplateCommand("select * from customers", conn);

    adapter.UpdateCommand = new TemplateCommand("update name, orderid values(@name, @orderid) where id = @id", conn);
    adapter.UpdateCommand.Parameters.Add("@name", DbType.String);
    adapter.UpdateCommand.Parameters.Add("@orderid", DbType.Int32);
    adapter.UpdateCommand.Parameters.Add("@id", DbType.Int32);

    DataSet ds = new DataSet();
    adapter.Fill(ds, "Customers");

    Console.WriteLine("------------------------");
    Console.WriteLine("Results of adapter.Fill");
    printDataSet(ds);
    Console.WriteLine("------------------------");

    ds.Tables["Customers"].Rows[2]["orderid"] = 4199;
    adapter.Update(ds, "Customers");

    Console.WriteLine("------------------------");
    Console.WriteLine("Results of adapter.Update");
    printDataSet(ds);
    Console.WriteLine("------------------------");
  }

  static void printDataSet(DataSet ds)
  {
    foreach (DataTable table in ds.Tables)
    {
      foreach (DataColumn col in table.Columns)
        Console.Write(col.ColumnName + "\t\t");
      Console.WriteLine();
      foreach (DataRow row in table.Rows)
      {
        for (int i = 0; i < table.Columns.Count; i++)
          Console.Write(row[i] + "\t\t");
        Console.WriteLine("");
      }
    }
  }
}

Per compilare il programma riportato nell'esempio di codice precedente, assicurarsi che sia incluso un riferimento al file DotNetDataProvider.dll.

Il seguente comando di esempio consente di compilare il programma, nel caso in cui tale programma sia memorizzato in un file denominato "SampleTest.vb":

vbc SampleTest.vb /r:system.dll /r:system.data.dll /r:system.xml.dll /r:DotNetDataProviderTemplate.dll

Il seguente comando di esempio consente di compilare il programma, nel caso in cui tale programma sia memorizzato in un file denominato "SampleTest.cs":

csc SampleTest.cs /r:system.dll /r:system.data.dll /r:system.xml.dll /r:DotNetDataProviderTemplate.dll

SampleDb

Oltre all'implementazione di un provider di dati .NET Framework di esempio, in questa sezione è disponibile un database di esempio, che consente di simulare operazioni SELECT e UPDATE in un'origine dati. Il database di esempio è denominato SampleDb ed è incluso nei file del provider di dati .NET Framework. Quando si compila il provider di dati .NET Framework di esempio, sarà necessario includere i file SampleDb.vb (per Visual Basic) o SampleDb.cs (per C#) insieme ai file di modello.

Vedere anche

Implementazione di un provider di dati .NET Framework