次の方法で共有


サンプル .NET Framework データ プロバイダ

前述のトピックには、サンプル .NET Framework データ プロバイダの作成に使用できるサンプル コードが記述されているトピックへのリンクが示されていました。サンプル コードを空白のテキスト ファイルにコピーし、それらのファイルをディレクトリに配置してコンパイルし、このトピックで後述する、サンプルの .NET Framework データ プロバイダに記述されている指示ごとに 1 つのライブラリを生成します。

サンプル .NET Framework データ プロバイダの作成に使用できるサンプル コード ファイルの一覧を次の表に示します。

ファイル名 説明
TemplateConnection.vb

TemplateConnection.cs

Connection オブジェクトを作成するサンプル コードが記述されています。詳細については、「Connection の実装」を参照してください。
TemplateTransaction.vb

TemplateTransaction.cs

Transaction オブジェクトを作成するサンプル コードが記述されています。詳細については、「Connection の実装」を参照してください。
TemplateCommand.vb

TemplateCommand.cs

Command オブジェクトを作成するサンプル コードが記述されています。詳細については、「Command の実装」を参照してください。
TemplateParameter.vb

TemplateParameter.cs

Command.Parameters コレクションのメンバである Parameter オブジェクトを作成するサンプル コードが記述されています。詳細については、「Command の実装」を参照してください。
TemplateParameterCollection.vb

TemplateParameterCollection.cs

Command.Parameters プロパティとして使用する ParameterCollection オブジェクトを作成するサンプルコードが記述されています。詳細については、「Command の実装」を参照してください。
TemplateDataReader.vb

TemplateDataReader.cs

DataReader オブジェクトを作成するサンプル コードが記述されています。詳細については、「DataReader の実装」を参照してください。
TemplateDataAdapter.vb

TemplateDataAdapter.cs

DataAdapter オブジェクトを作成するサンプル コードが記述されています。詳細については、「DataAdapter の実装」を参照してください。
SampleDb.vb

SampleDb.cs

クエリをシミュレートし、データ ソースに更新を反映するサンプル コードが記述されています。詳細については、このトピックで後述する「SampleDb」を参照してください。

サンプル .NET Framework データ プロバイダのコンパイル

このセクションに示されているサンプル コードからファイルを作成し、これらのファイルをフォルダに保存した後、次に示すコマンドを実行して、サンプル .NET Framework データ プロバイダを DotNetDataProviderTemplate.dll として作成します。DotNetDataProviderTemplate 名前空間を使用するプログラムへ、作成した DotNetDataProviderTemplate.dll を参照として渡すことができます。

Visual Basic バージョンのサンプル .NET Framework データ プロバイダをコンパイルするには、次のコマンドを使用します。

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

C# バージョンのサンプル .NET Framework データ プロバイダをコンパイルするには、次のコマンドを使用します。

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

サンプル .NET Framework データ プロバイダの使用

サンプル .NET Framework データ プロバイダをコンパイルして DotNetDataProviderTemplate.dll に変換すると、DotNetDataProviderTemplate 名前空間を使用するプログラムを作成できます。

サンプル DataReader とサンプル DataAdapter のインスタンスを作成するプログラムのコード例を次に示します。

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

前述のコード例のプログラムをコンパイルするには、DotNetDataProvider.dll への参照が含まれていることを確認してください。

ファイルに含まれている "SampleTest.vb" というプログラムをコンパイルするコマンドの例を次に示します。

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

ファイルに含まれている SampleTest.cs というプログラムをコンパイルするコマンドの例を次に示します。

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

SampleDb

このセクションでは、サンプル .NET Framework データ プロバイダの実装と共に、データ ソースへの SELECT 操作と UPDATE 操作をシミュレートするサンプル データベースについて説明します。この SampleDb というサンプル データベースは .NET Framework データ プロバイダ ファイルと共に提供されます。サンプル .NET Framework データ プロバイダをコンパイルするときには、テンプレート ファイルと共に SampleDb.vb (Visual Basic) ファイルまたは SampleDb.cs (C#) ファイルをインクルードする必要があります。

参照

.NET Framework データ プロバイダの実装