如何: 使用基底類別來減少分支與受管理提供者在 Visual C#.NET 中的程式碼

文章翻譯 文章翻譯
文章編號: 313304 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

若要瞭解如何使用基底類別來減少分支與受管理的提供者的程式碼中使用此逐步教學指南。

該技巧的描述

ADO.NET 了不同類型的資料提供者 (比方說 SqlClient、 OleDb、 ODBC,等等)。如果您選擇錯誤的.NET 資料提供者,當您開發應用程式時,會鎖定在使用提供者,或者您可能廣泛地重寫您的程式碼。若要避免這個問題,您可以使用基底類別。

比方說所有 [SqlDataAdapterOleDbDataAdapterOdbcDataAdapter 類別繼承自 DbDataAdapter 類別會輪流繼承自 System.Data.Common.DataAdapter 類別。您可以建立我們自己的類別或使用父類別 (資料配接器) 的函式,而不是繼承的類別 (例如 SqlDataAdapterOleDbDataAdapterOdbcDataAdapter)。此函數會傳回通用的物件或是獨立於提供者的介面。這種方式可以隔離特定提供者的程式碼,以常用的函式或類別,並撰寫您的應用程式,讓它是泛型的所有提供者。

取得更多資訊有關 Visual C#.NET 中的繼承按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
307205如何: 在 C# 中使用繼承
本文中的程序將示範如何使用 IDataAdapter 介面來接受任何.NET 提供者特定 資料配接器

注意: 對於程式碼分支的慣用的方法是使用 IDataAdapter 介面,從 DbDataAdapter 類別繼承時。其他慣用的介面 inclue IDBConnectionIDBCommandIDataReader

需求

下列項目描述建議的硬體、 軟體、 網路基礎結構、 技能和知識及 Service Pack,您將需要:
  • Microsoft Windows 2000 專業版,Microsoft Windows 2000 Server,Microsoft Windows 2000 進階伺服器或 Microsoft Windows NT 4.0 伺服器
  • Microsoft Visual Studio.NET
  • ODBC.NET 資料提供者
  • Microsoft SQL Server 7.0 (含) 以後版本
下列項目說明您應該瞭解,在使用這份文件中提供的資訊之前。
  • Microsoft Visual Studio.NET
  • Microsoft ADO.NET 基本原則及語法

建立專案並加入程式碼

下列範例說明如何使用 IDataAdapter 介面來減少從 System.Data.OleDb.OledbDataAdapterSystem.Data.SqlClient.SqlDataAdapterMicrosoft.Data.Odbc.OdbcDataAdapter 分支的程式碼。
  1. 啟動 Visual Studio.NET。
  2. 在 Visual C#.NET 中建立新的 Windows 應用程式。
  3. 請確定您的專案包含 System.Data 命名空間的參考 ; 加入的參考,如果不符合。
  4. 將參考加入至 Microsoft.Data.Odbc.dll。取得更多資訊有關 ODBC.NET 受管理提供者按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    310988HOWTO: 在 Visual C#.NET 和連線字串中使用 ODBC.NET Managed 提供者
  5. 放置一個 按鈕DataGrid 和在 Form1 上的三個 選項按鈕 控制項。
    • 將按鈕] 的 [名稱] 屬性變更為 btnTest 並將 [文字] 屬性來 測試
    • 將第一個 選項按鈕] 的 [名稱] 屬性變更為 rbSqlClient,而將 Text 屬性設定為 SQL 用戶端
    • 將第二個 選項按鈕] 的 [名稱] 屬性變更為 rbOledb,而將 Text 屬性設定為 OLEDB
    • 將第三個 選項按鈕] 的 [名稱] 屬性變更為 rbOdbc,而將 Text 屬性設定為 ODBC
  6. 如此一來您不需要限定在稍後的程式碼中的這些命名空間中宣告,請使用命名空間上的 使用 陳述式。將下列程式碼新增到 Form1 的一般宣告 」 區段:
    using System.Data;
    using System.Data.Common;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    using Microsoft.Data.Odbc;
    					
  7. 輸入或貼上下列程式碼在區域中的一般宣告 」:
    IDataAdapter da;
    DataSet ds = new DataSet();
    					
  8. 建立包含下列程式碼的 DataAdapterFactory 函式:
    public IDataAdapter DataAdapterFactory()
    {
    	String myConnString; 
    	String myQuery  = "Select * From Customers";
    
    	if (rbSqlClient.Checked)
    	{
    		//Using SqlClient
    		myConnString = "server=myserver;integrated security=sspi;database=Northwind";
    		SqlConnection mycon = new SqlConnection(myConnString);
    		SqlDataAdapter daCust = new SqlDataAdapter(myQuery, mycon);
    		return daCust;
    	}
    	else if (rbOledb.Checked)
    	{
    		//Using OleDb
    		myConnString = "Provider=SqlOledb.1;Data Source=myserver;integrated security=SSPI;Database=Northwind";
    		OleDbConnection mycon = new OleDbConnection(myConnString);
    		OleDbDataAdapter daCust = new OleDbDataAdapter(myQuery, mycon);
    		return daCust;
    	}															   
    	else if (rbOdbc.Checked)
    	{
    		//Using Odbc
    		myConnString = "Driver={SQL Server};Server=myserver;trusted_connection=yes;database=Northwind";
    		Microsoft.Data.Odbc.OdbcConnection mycon = new Microsoft.Data.Odbc.OdbcConnection(myConnString);
    		OdbcDataAdapter daCust = new OdbcDataAdapter(myQuery, mycon);
    		return daCust;
    	}
    	else
    	{
    		return null;
    	}																											  
    }
    					
  9. 輸入或貼上下列程式碼 btnTest Click 事件中:
    da = DataAdapterFactory();
    da.Fill(ds);
    dataGrid1.DataSource = ds ;
    					
  10. 修改連接字串,使之適用於您的環境。
  11. 儲存您的專案。在 [偵錯] 功能表上按一下 [開始] 執行您的專案]。
  12. 選取受管理的提供者,您要使用的連線並再按一下 (Test)] 按鈕。

    [DataGrid 會顯示查詢所傳回的資料。

疑難排解

如果您使用 [基底類別可能會失去提供者特定的功能。

?考

關於 ADO.NET 物件和語法的更多資訊,請參閱 Microsoft.NET Framework SDK 文件或 MSDN Online:
存取使用 ADO.NET 的資料
http://msdn.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx
受管理的.NET 提供者的相關資訊,請參照.NET 開發人員中心或下列 Microsoft 網站:
在.NET 內受管理提供者
http://msdn.microsoft.com/en-us/library/ms810268.aspx

屬性

文章編號: 313304 - 上次校閱: 2007年5月13日 - 版次: 3.4
這篇文章中的資訊適用於:
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
關鍵字:?
kbmt kbhowtomaster kbsqlclient kbsystemdata KB313304 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:313304
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com