Freigeben über


Beispiel für einen .NET Framework-Datenprovider

Die vorherigen Themen enthalten Links zu zusätzlichen Themen, die Beispielcode enthalten, den Sie zum Erstellen eines Beispiel-.NET Framework-Datenproviders verwenden können. Sie können diesen Code in leere Textdateien kopieren, die Dateien in ein Verzeichnis stellen und sie in eine Bibliothek kompilieren. Anweisungen hierzu finden Sie im Abschnitt "Kompilieren des Beispiel-.NET Framework-Datenproviders" weiter hinten in diesem Thema.

Die folgende Tabelle enthält eine Liste der Beispielcodedateien, die zum Erstellen eines Beispiel-.NET Framework-Datenproviders zur Verfügung stehen.

Dateiname Beschreibung
TemplateConnection.vb

TemplateConnection.cs

Enthält Beispielcode zum Erstellen eines Connection-Objekts. Weitere Informationen finden Sie unter Implementieren einer Verbindung.
TemplateTransaction.vb

TemplateTransaction.cs

Enthält Beispielcode zum Erstellen eines Transaction-Objekts. Weitere Informationen finden Sie unter Implementieren einer Verbindung.
TemplateCommand.vb

TemplateCommand.cs

Enthält Beispielcode zum Erstellen eines Command-Objekts. Weitere Informationen finden Sie unter Implementieren eines Befehls.
TemplateParameter.vb

TemplateParameter.cs

Enthält Beispielcode zum Erstellen eines Parameter-Objekts, das ein Member der Command.Parameters-Auflistung ist. Weitere Informationen finden Sie unter Implementieren eines Befehls.
TemplateParameterCollection.vb

TemplateParameterCollection.cs

Enthält Beispielcode zum Erstellen eines ParameterCollection-Objekts, das als Command.Parameters-Eigenschaft verwendet wird. Weitere Informationen finden Sie unter Implementieren eines Befehls.
TemplateDataReader.vb

TemplateDataReader.cs

Enthält Beispielcode zum Erstellen eines DataReader-Objekts. Weitere Informationen finden Sie unter Implementieren eines DataReaders.
TemplateDataAdapter.vb

TemplateDataAdapter.cs

Enthält Beispielcode zum Erstellen eines DataAdapter-Objekts. Weitere Informationen finden Sie unter Implementieren eines DataAdapters.
SampleDb.vb

SampleDb.cs

Enthält Beispielcode, der eine Abfrage simuliert und eine Datenquelle aktualisiert. Weitere Informationen finden Sie unter "SampleDb" weiter hinten in diesem Thema.

Kompilieren des Beispiel-.NET Framework-Datenproviders

Nachdem Sie die Dateien mit Hilfe des bereitgestellten Beispielcodes erstellt und in einem Ordner gespeichert haben, geben Sie folgenden Befehl aus, um den Beispiel-.NET Framework-Datenprovider als DotNetDataProviderTemplate.dll zu erstellen. DotNetDataProviderTemplate.dll kann dann als Verweis auf ein Programm weitergegeben werden, das den DotNetDataProviderTemplate-Namespace verwendet.

Mit Hilfe des folgenden Befehls können Sie die Visual Basic-Version des Beispiel-.NET Framework-Datenproviders kompilieren.

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

Mit Hilfe des folgenden Befehls können Sie die C#-Version des Beispiel-.NET Framework-Datenproviders kompilieren.

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

Verwenden des Beispiel-.NET Framework-Datenproviders

Nachdem Sie den Beispiel-.NET Framework-Datenprovider in DotNetDataProviderTemplate.dll kompiliert haben, können Sie ein Programm schreiben, um den DotNetDataProviderTemplate-Namespace zu verwenden.

Das folgende Codebeispiel enthält ein Programm, das Instanzen des Beispiel-DataReaders und des Beispiel-DataAdapters erstellt.

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

Wenn Sie das Programm im vorherigen Codebeispiel kompilieren möchten, vergewissern Sie sich, dass ein Verweis auf DotNetDataProvider.dll vorhanden ist.

Im folgenden Beispielbefehl wird das Programm kompiliert, sofern es in der Datei SampleTest.vb gespeichert wurde:

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

Im folgenden Beispielbefehl wird das Programm kompiliert, sofern es in der Datei SampleTest.cs gespeichert wurde:

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

SampleDb

Dieser Abschnitt enthält eine Beispielimplementierung eines .NET Framework-Datenproviders sowie eine Beispieldatenbank, um die SELECT-Operation und die UPDATE-Operation für eine Datenquelle zu simulieren. Diese Beispieldatenbank heißt SampleDb und befindet sich unter den .NET Framework-Datenproviderdateien. Sie müssen die Dateien SampleDb.vb (für Visual Basic) oder SampleDb.cs (für C#) beim Kompilieren des Beispiel-.NET Framework-Datenproviders in die Vorlagendateien einfügen.

Siehe auch

Implementieren eines .NET Framework-Datenproviders