共用方式為


.NET Framework 資料提供者範例

前面主題包含連至其他主題的連結,您可以藉此取得範例程式碼來建立 .NET Framework 資料提供者範例。您可以將這個程式碼複製至空白文字檔後將檔案放入目錄,然後按照這個主題後面<編譯 .NET Framework 資料提供者範例>章節中的每項指示,將檔案編譯至程式庫。

下列表格顯示可用來建立 .NET Framework 資料提供者範例的範例程式碼檔案清單。

檔名 說明
TemplateConnection.vb

TemplateConnection.cs

包含建立 Connection 物件的範例程式碼。如需詳細資訊,請參閱實作 Connection
TemplateTransaction.vb

TemplateTransaction.cs

包含建立 Transaction 物件的範例程式碼。如需詳細資訊,請參閱實作 Connection
TemplateCommand.vb

TemplateCommand.cs

包含建立 Command 物件的範例程式碼。如需詳細資訊,請參閱實作 Command
TemplateParameter.vb

TemplateParameter.cs

包含建立 Parameter 物件的範例程式碼,而 Parameter 屬於 Command.Parameters 集合的成員。如需詳細資訊,請參閱實作 Command
TemplateParameterCollection.vb

TemplateParameterCollection.cs

包含建立 ParameterCollection 物件的範例程式碼,而 ParameterCollection 用來當作 Command.Parameters 的屬性。如需詳細資訊,請參閱實作 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.dll 當成參考,傳遞給利用 DotNetDataProviderTemplate 命名空間的程式。

若要編譯 .NET Framework 資料提供者範例的 Visual Basic 版本,您可以使用下列命令。

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

若要編譯 .NET Framework 資料提供者範例的 C# 版本,您可以使用下列命令。

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

使用 .NET Framework 資料提供者範例

將 .NET Framework 資料提供者範例編譯入 DotNetDataProviderTemplate.dll 後,您可撰寫程式來使用 DotNetDataProviderTemplate 命名空間。

下列程式碼範例包含的程式可建立 DataReaderDataAdapter 範例的執行個體 (Instance)。

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 資料提供者