.NET Framework 資料提供者範例
前面主題包含連至其他主題的連結,您可以藉此取得範例程式碼來建立 .NET Framework 資料提供者範例。您可以將這個程式碼複製至空白文字檔後將檔案放入目錄,然後按照這個主題後面<編譯 .NET Framework 資料提供者範例>章節中的每項指示,將檔案編譯至程式庫。
下列表格顯示可用來建立 .NET Framework 資料提供者範例的範例程式碼檔案清單。
檔名 | 說明 |
---|---|
TemplateConnection.vb | 包含建立 Connection 物件的範例程式碼。如需詳細資訊,請參閱實作 Connection。 |
TemplateTransaction.vb | 包含建立 Transaction 物件的範例程式碼。如需詳細資訊,請參閱實作 Connection。 |
TemplateCommand.vb | 包含建立 Command 物件的範例程式碼。如需詳細資訊,請參閱實作 Command。 |
TemplateParameter.vb | 包含建立 Parameter 物件的範例程式碼,而 Parameter 屬於 Command.Parameters 集合的成員。如需詳細資訊,請參閱實作 Command。 |
TemplateParameterCollection.vb | 包含建立 ParameterCollection 物件的範例程式碼,而 ParameterCollection 用來當作 Command.Parameters 的屬性。如需詳細資訊,請參閱實作 Command。 |
TemplateDataReader.vb | 包含建立 DataReader 物件的範例程式碼。如需詳細資訊,請參閱實作 DataReader。 |
TemplateDataAdapter.vb | 包含建立 DataAdapter 物件的範例程式碼。如需詳細資訊,請參閱實作 DataAdapter。 |
SampleDb.vb | 包含模擬查詢並更新至資料來源的範例程式碼。如需詳細資訊,請參閱稍後這個主題中的<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 命名空間。
下列程式碼範例包含的程式可建立 DataReader 和 DataAdapter 範例的執行個體 (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#) 檔案。