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 | Contiene código de ejemplo para crear un objeto Connection. Para obtener más información, vea Implementar una conexión. |
TemplateTransaction.vb | Contiene código de ejemplo para crear un objeto Transaction. Para obtener más información, vea Implementar una conexión. |
TemplateCommand.vb | Contiene código de ejemplo para crear un objeto Command. Para obtener más información, vea Implementar un comando. |
TemplateParameter.vb | 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 | 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 | Contiene código de ejemplo para crear un objeto DataReader. Para obtener más información, vea Implementar DataReader. |
TemplateDataAdapter.vb | Contiene código de ejemplo para crear un objeto DataAdapter. Para obtener más información, vea Implementar DataAdapter. |
SampleDb.vb | 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.