Compartir a través de


Ejemplo de proveedores de datos de .NET Framework

Los temas anteriores contienen vínculos a otros temas que contienen código de ejemplo que puede utilizar para crear un proveedor de datos de .NET Framework de ejemplo. Puede copiar este código a archivos de texto en blanco, poner los archivos en un directorio y compilarlos en una biblioteca según las instrucciones descritas en la sección "Compilar el proveedor de datos de .NET Framework de ejemplo", más adelante en este mismo tema.

En la tabla siguiente se muestra la lista de los archivos de código de ejemplo que puede utilizar para crear un proveedor de datos de .NET Framework de ejemplo.

Nombre de archivo Descripción
TemplateConnection.vb

TemplateConnection.cs

Contiene código de ejemplo para crear un objeto Connection. Para obtener más información, vea Implementar una conexión.
TemplateTransaction.vb

TemplateTransaction.cs

Contiene código de ejemplo para crear un objeto Transaction. Para obtener más información, vea Implementar una conexión.
TemplateCommand.vb

TemplateCommand.cs

Contiene código de ejemplo para crear un objeto Command. Para obtener más información, vea Implementar un comando.
TemplateParameter.vb

TemplateParameter.cs

Contiene código de ejemplo para crear un objeto Parameter que es miembro de la colección Command.Parameters. Para obtener más información, vea Implementar un comando.
TemplateParameterCollection.vb

TemplateParameterCollection.cs

Contiene código de ejemplo para crear un objeto ParameterCollection que se utilizará como propiedad Command.Parameters. Para obtener más información, vea Implementar un comando.
TemplateDataReader.vb

TemplateDataReader.cs

Contiene código de ejemplo para crear un objeto DataReader. Para obtener más información, vea Implementar DataReader.
TemplateDataAdapter.vb

TemplateDataAdapter.cs

Contiene código de ejemplo para crear un objeto DataAdapter. Para obtener más información, vea Implementar DataAdapter.
SampleDb.vb

SampleDb.cs

Contiene código de ejemplo que simula una consulta y actualiza un origen de datos. Para obtener más información, vea la sección "SampleDb" más adelante en este mismo tema.

Compilar el proveedor de datos de .NET Framework de ejemplo

Después de crear los archivos a partir del código de ejemplo proporcionado y ponerlos en una carpeta, utilice el siguiente comando para crear el proveedor de datos de .NET Framework de ejemplo como DotNetDataProviderTemplate.dll. DotNetDataProviderTemplate.dll puede pasarse entonces como referencia a un programa que utiliza el espacio de nombres DotNetDataProviderTemplate.

Para compilar la versión de Visual Basic del proveedor de datos de .NET Framework de ejemplo, puede utilizar el comando siguiente.

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

Para compilar la versión de C# del proveedor de datos de .NET Framework de ejemplo, puede utilizar el comando siguiente.

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

Utilizar el proveedor de datos de .NET Framework de ejemplo

Una vez compilado el proveedor de datos de .NET Framework de ejemplo en DotNetDataProviderTemplate.dll, puede escribir un programa para utilizar el espacio de nombres DotNetDataProviderTemplate.

El siguiente ejemplo de código contiene un programa que crea instancias de los objetos DataReader y DataAdapter de ejemplo.

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("");
      }
    }
  }
}

Para compilar el programa del ejemplo de código anterior, asegúrese de que se ha incluido una referencia a DotNetDataProvider.dll.

El siguiente comando de ejemplo compilará el programa si está almacenado en un archivo denominado "SampleTest.vb":.

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

El siguiente comando de ejemplo compilará el programa si está almacenado en un archivo denominado SampleTest.cs.

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

SampleDb

Además de la implementación del proveedor de datos de .NET Framework de ejemplo, en esta sección se proporciona una base de datos de ejemplo para simular las operaciones SELECT y UPDATE en un origen de datos. Esta base de datos de ejemplo se denomina SampleDb y se incluye con los archivos del proveedor de datos de .NET Framework. Tendrá que incluir el archivo SampleDb.vb (para Visual Basic) o SampleDb.cs (para C#) con los archivos de plantilla cuando compile el proveedor de datos de .NET Framework de ejemplo.

Vea también

Implementar un proveedor de datos de .NET Framework