資訊: 藍圖的.NET 資料提供者

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

在此頁中

結論

這篇文章提供了解並掌握如何使用 ADO.NET 的藍圖資料提供者。藍圖的文件提供連結至有用的資訊,包括線上文件、 微軟知識庫文件,以及 Microsoft 白色文件,以協助您深入了解 Microsoft 產品或技術。

如需詳細資訊ADO.NET 技術藍圖文件,按一下下面的文件編號,檢視「 Microsoft 知識庫文件:
313590 ADO.NET 的資訊: 資料表
如需關於 ADO.NET資料配接器物件的詳細資訊,按一下 [文件編號,檢視中的文件「 Microsoft 知識庫 」:
313483 資訊: ADO.NET 資料配接器物件的藍圖

概觀和架構

Microsoft.NET 資料提供者是一組提供的類別存取資料庫或資料來源。Microsoft.NET Framework 其中包括兩個資料提供者:
  • OLE DB.NET 資料提供者 (OleDb),用來存取資料庫透過 Microsoft OLE DB
  • SQL Server.NET 資料提供者 (SqlClient),它提供了Microsoft SQL Server 7.0 版的直接、 高效能存取,稍後
其他資料提供者會出現在網路上來回協力廠商所提供。此外,您可以使用可用的軟體開發套件 (SDK) 撰寫您自己的資料提供者。

每一個資料提供者包含連接命令,與參數物件,以及新DataReader交易的物件。這篇文章提供幫助您使用的參考您的應用程式中的.NET 資料提供者物件。

如需的概觀.NET 資料提供者,請參閱下列主題中的 Microsoft VisualStudio.NET 線上說明 》 文件: Visual Studio.NET 與.NET 的開發平台包括SqlClient 和 OleDb.NET 資料提供者。您可以下載 ODBC.NET資料提供者從下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/data/aa937730.aspx
MSDN 文件

ADO.NET 入門
http://msdn.microsoft.com/en-us/library/aa902662 (v=sql.80).aspx

程式設計備忘稿

一定要呼叫的關閉處置方法明確關閉或處置連接DataReader應用程式程式碼中的物件。不會讓物件落在範圍,或將它設定為執行任何動作(在 Visual Basic) 則為空值(以視覺化的 C# 和 Visual C++)。如果您不會呼叫關閉處置,直到下一步的廢棄項目佔用過多的資源集合。

不過,不會呼叫關閉處置連接物件、 DataReader物件或Finalize方法類別的任何其他 managed 的物件上。物件的完成項期間呼叫記憶體回收。當您關閉處置呼叫Finalize方法,您的類別中的 managed 物件上時,如果發生問題的類別,您處置記憶體的不具備執行緒安全,而且您的應用程式上是否正在執行多處理器的電腦。

在您完成設定式,您應該僅釋放您的類別直接擁有的 unmanaged 的資源。如果您並未擁有任何未受管理的資源,在您的類別定義中不包含Finalize方法。這點特別重要如果Windows 服務、 Web 服務或另一個 ASP.NET 應用程式會使用您的類別。這些類型的應用程式並沒有在伺服器上的使用者介面電腦。任何的判斷提示或其他錯誤所引發,則會造成伺服器處理程序停止回應 (擱置)。


快速入門範例、 逐步解說中,以及 Microsoft 知識庫 」 文件

快速入門範例檔會提供程式碼範例,供您參考。逐步解說將提供教學課程,帶您逐步完成一般的應用程式開發案例。Microsoft Knowledge Base"How To"文件提供了有關如何完成特定工作的逐步指示。

[Visual Studio.NET 線上說明] 主題、 快速入門範例檔案、 逐步解說中,微軟知識庫文件,請依照下列各節說明如何使用.NET 資料提供者。

MSDN 文件
使用.NET 資料提供者來存取資料
http://msdn2.microsoft.com/en-us/library/s7ee2dwt (vs.71).aspx
快速入門範例

您的電腦上所安裝的快速入門範例檔案在兩個位置。如果您安裝快速入門範例檔的一部分Visual Studio.NET 中,這個檔案位於下列資料夾中的範例:
C:\Program 必要 Visual Studio.NET\FrameworkSDK\Samples\QuickStart\...
如果您安裝快速入門範例檔案做為.NET 的一部分開發平台時,檔案位於下列資料夾中的範例:
C:\Program Files\FrameworkSDK\Samples\QuickStart\...
逐步解說

在 Visual Studio.NET 中,按一下 [說明] 功能表上的 [索引]。在 [尋找目標] 文字方塊中,輸入 逐步解說中資料.[索引結果] 窗格中顯示資料存取的逐步解說的清單。

微軟知識庫文件
310985 HOW TO: 使用 ODBC.NET Managed 提供者在 Visual Basic.NET 和連接字串
310988 HOW TO: 使用 ODBC.NET Managed 提供者在視覺 C#.NET 和連接字串
按這裡來檢視一份 How To 文件有關.NET 資料提供者

連線

一般情況下, OleDbConnectionOdbcConnection物件的有效連接字串完全一樣的 Microsoft 的連接字串ActiveX 資料物件 (ADO) OLE DB 與 ODBC 分別。主要的差異您不能連接到 ODBC 驅動程式 ; 使用OleDbConnection物件您必須使用 ODBC.NET資料提供者而。此外,OleDb.NET 資料提供者要求OLE DB 提供者支援特定的介面。如需這些介面的清單請參閱下列 Visual Studio.NET 線上說明 》 主題文件或 MSDN:
OLE DB.NET 資料提供者所使用的 OLE DB 介面
http://msdn.microsoft.com/en-us/library/cwctxe7a (v=vs.71).aspx
可以 SqlClient.NET 資料提供者的連接字串搭配一個主要使用 ODBC 或 OLE DB 連接字串中的項目例外狀況: SqlClient.NET 資料提供者不能使用資料來源名稱(Dsn),檔案名稱 (dsn) 或使用者定義的型別 (UDT) 檔案。此外,SqlClient.NET 資料提供者不能指定驅動程式提供者的項目。

如需適用於典型物件的連接字串項目,請參閱 Visual Studio.NET 中的下列主題線上說明] 文件或 MSDN:
SqlConnection.ConnectionString 屬性
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx
ADO,該圖形連接物件,在 ADO.NET 中的不允許您執行命令。您必須使用命令物件。此外,在您控制中的交易方式ADO.NET 是 ADO 先前版本中不相同。

如果您將sql 命令OleDbCommand元件加入至您的應用程式,透過工具箱] 中 (在 [資料庫] 索引標籤),您可以在執行階段透過編輯屬性[屬性] 視窗。

Visual Studio.NET 線上說明] 文件
連線到使用 ADO.NET 的資料來源
http://msdn.microsoft.com/en-us/library/32c5dh3b (v=vs.71).aspx

連線到 SQL Server 使用 ADO.NET
http://msdn.microsoft.com/en-us/library/aa719765 (v=vs.71).aspx

連接共用的 SQL Server.NET 資料提供者
http://msdn.microsoft.com/en-us/library/8xx3tyca (v=vs.71).aspx

連線到使用 ADO.NET 與 OLE DB 資料來源
http://msdn.microsoft.com/en-us/library/aa719763 (v=vs.71).aspx

OLE DB.NET 資料提供者的連接共用
http://msdn.microsoft.com/en-us/library/aa719769 (v=vs.71).aspx

使用連接事件
http://msdn.microsoft.com/en-us/library/a0hee08w (v=vs.80).aspx
微軟知識庫文件
309485 HOW TO: 使用 Visual Basic.NET 建置以程式設計方式在 ADO.NET 中的連接字串
310083 HOW TO: 使用視覺 C#.NET 建置以程式設計方式在 ADO.NET 中的連接字串
308075 HOW TO: 使用 Visual Basic.NET 中的 OleDbConnection 物件的資料連結檔案

命令及參數

您可以使用命令,在伺服器上執行的陳述式。有多種不同Execute方法:
  • ExecuteNonQuery。需要不有任何輸出。
  • ExecuteScalar。會傳回純量結果。
  • ExecuteReader。傳回資料錄的資料的流。
  • ExecuteXmlsql 命令。傳回 System.Xml.XmlReader 物件從 SQL Server 的 XML查詢。
若要控制命令的執行,編碼中的資料SQL 陳述式中,或包含透過參數物件的資料。理想的作法是使用參數,因為您執行動作不需要分隔符號,並可能是由於其他特殊字元逸出無效的 SQL 指令碼。此外,SqlClient.NET 資料提供者會繫結依名稱的參數。因此,您可以重複使用 SQL 指令碼中的參數,您沒有將資料傳送好幾次。

您也可以讀取上一步中輸出參數的資料。不過,如果命令傳回DataReader,您必須呼叫關閉處置方法上DataReader才能存取輸出參數值。因為伺服器會在資料流,結尾處的輸出參數的值傳送給您必須先清除或直接處理介於其間的資料。

如果您新增Sql 命令OleDbCommand元件到您的應用程式從工具箱] (在 [資料庫] 索引標籤),您可以在執行階段透過編輯它的屬性[屬性] 視窗,並建立透過圖形化命令設計工具。

Visual Studio.NET 線上說明] 文件
執行命令
http://msdn.microsoft.com/en-us/library/tyy0sz6b.aspx

使用預存程序的指令
http://msdn.microsoft.com/en-us/library/yy6y35y8 (v=vs.71).aspx

從資料庫取得單一值
http://msdn.microsoft.com/en-us/library/hdt3k85x (v=vs.71).aspx

從資料庫取得 BLOB 值
http://msdn.microsoft.com/en-us/library/87z0hy49 (v=vs.71).aspx

執行資料庫目錄作業
http://msdn.microsoft.com/en-us/library/ye97aks6 (v=vs.71).aspx

修改資料庫中的資料
http://msdn.microsoft.com/en-us/library/3btz0xwf (v=vs.71).aspx

從 SQL Server,為 XML 中取得資料
http://msdn.microsoft.com/en-us/library/ke345d80 (v=vs.71).aspx
逐步解說

在 [說明] 索引中,輸入 逐步解說中,資料然後選取下列主題:
逐步解說: 更新資料在 Web Form 中使用資料庫更新查詢
微軟知識庫文件
301075 HOW TO: 連接至資料庫,並使用 ADO.NET 和 Visual Basic.NET 中執行命令
306636 HOW TO: 連接至資料庫,並使用 ADO.NET 和視覺化 C#.NET 執行命令
308049 HOW TO: 使用 ADO.NET 和 Visual Basic.NET 呼叫參數化預存程序
310070 HOW TO: 使用 ADO.NET 和視覺化 C#.NET 呼叫參數化的預存程序
310071 HOW TO: 使用 ADO.NET 和 Visual C++.NET 呼叫參數化的預存程序
309486 HOW TO: 執行參數化 SQL 預存程序,使用 ODBC.NET 提供者和 Visual Basic.NET
310130 HOW TO: 執行參數化 SQL 預存程序,使用 ODBC.NET 提供者和視覺化 C#.NET
310142 HOW TO: 執行參數化 SQL 預存程序,使用 ODBC.NET 提供者和視覺化 C#.NET
305079 HOW TO: 建立 SQL Server 資料庫程式設計的方式使用 ADO.NET 和 Visual Basic.NET
307283 HOW TO: 建立 SQL Server 資料庫程式設計的方式使用 ADO.NET 和視覺化 C#.NET
307402 HOW TO: 建立 SQL Server 資料庫程式設計的方式使用 ADO.NET 與 Visual C++.NET
若要檢視命令的相關 How To 文章的清單,請按這裡

交易

在資料存取物件 (DAO),遠端資料物件 (RDO),或ActiveX Data Objects (ADO),您會使用資料庫連接物件的方法來控制交易狀態。在.NET 資料提供者,您會使用交易物件來控制交易狀態。

若要建立交易物件,使用BeginTransaction方法的連接物件。若要認可或復原交易,您可以使用交易物件的方法。因為某些 OLE DB 提供者,例如 Microsoft Jet支援巢狀的交易, OleDbTransaction物件包含了一個開始的方法會傳回具有多個區域的範圍內的另一個交易物件。

當您建立的交易物件時,您可以指定的交易隔離等級。如果您使用預設值以外的交易隔離等級,可能會讀取您的程式碼未認可的資料意外。此外,您的程式碼可能會產生過多鎖定伺服器上。

您必須將交易物件指派給命令,為了讓該命令,以參與交易的交易屬性。如果資料庫不存在在相同的連線上支援多個交易,就會收到例外狀況當您嘗試執行的命令並未用來建立交易期間在交易中。

您也可以執行 SQL 陳述式來控制在伺服器上的交易。但是,請勿混合使用交易物件的 SQL 陳述式。您可能會遇到未預期的行為。

Visual Studio.NET 線上說明] 文件
執行交易
http://msdn.microsoft.com/en-us/library/777e5ebh (v=vs.80).aspx

IsolationLevel 列舉型別
http://msdn.microsoft.com/en-us/library/system.data.isolationlevel (v=vs.71).aspx
微軟知識庫文件

按一下這裡來查看交易的相關 How To 文章的清單

DataReader

您可以使用DataReader物件與資料庫伺服器讀取資料錄。使用Command.ExecuteReader方法來建立DataReader物件。DataReader可以處理這兩個多個結果集和階層式或章節化結果集。DataReader使用伺服器端、 順向/唯讀資料指標。一般情況下, DataReader緩衝處理整筆記錄。不過,您可以指定旗標Command.ExecuteReader方法中,以便DataReader訊息緩衝處理僅限於目前的欄位,並讓其他的變更額外的效能。

在任何指定的連接上一次只能有一個DataReader可開啟。ADO.NET 和 ADO,不同的是它不會開啟額外的連線執行對已封鎖的連接時。相反地,您收到例外狀況。

您可以繫結網頁因為 Web 網頁,就會以循序方式產生,所以會形成DataReader的控制項。不過,您無法繫結的 Windows Form 控制項至DataReader因為 Windows Form 控制項需要捲動資料指標,繫結至資料集資料相反。

您無法從DataReader來存取基礎的指令連線物件。因此,如果您將DataReader傳遞至不受信任的元件,元件無法執行針對伺服器有惡意的命令。如果您想DataReader元件關閉它時,自動關閉連線,請Command.ExecuteReader方法中設定CloseConnection旗標。

您不能傳遞DataReader超出目前的 AppDomain。如果您想要將資料傳遞到另一個程序時,使用資料集。或者,傳遞出的連接字串和命令文字,然後允許另一個應用程式建立DataReader在本機上。

Visual Studio.NET 線上說明] 文件
擷取使用 DataReader 的資料
http://msdn.microsoft.com/en-us/library/haa3afyz (v=vs.71).aspx

使用預存程序的指令
http://msdn.microsoft.com/en-us/library/yy6y35y8 (v=vs.71).aspx

CommandBehavior 列舉型別
http://msdn.microsoft.com/en-us/library/system.data.commandbehavior (v=vs.71).aspx
微軟知識庫文件
308278 HOW TO: 擷取,並使用 ASP.NET、 ADO.NET 和 Visual Basic.NET 中顯示從 Access 資料庫的記錄
308100 HOW TO: 擷取,並使用 ASP.NET、 ADO.NET,和視覺 C#.NET 來顯示從 Access 資料庫的記錄
309490 HOW TO: 在 Visual Basic.NET 中使用 DataReader 來處理多個結果
311274 HOW TO: 使用 DataReader 視覺化 C#.NET 中處理多個結果
308045 HOW TO: 使用 Visual Basic.NET 中 DataReader ADO 的 SHAPE 指令
309130 HOW TO: 使用視覺 C#.net DataReader ADO 的 SHAPE 指令
310108 HOW TO: 使用 DataReader GetSchemaTable 方法,而且 Visual Basic.NET 中擷取資料行結構描述
310107 HOW TO: 使用 DataReader GetSchemaTable 方法,並且視覺化 C#.NET 來擷取資料行結構描述
309683 HOW TO: 使用 DataReader GetSchemaTable 方法,而且 Visual C++.NET 來擷取資料行結構描述
310348 HOW TO: 在 Visual Basic.NET 中使用 DataReader 時避免的 Boxing 耗損
312855 HOW TO: 使用 DataReader 視覺化 C#.NET 中時,避免的 Boxing 耗損
按這裡來檢視有關 DataReader 的 How To 文章的清單

錯誤處理

資料提供者要引發的錯誤會是特製化的例外狀況:
  • SqlException
  • OleDbException
  • OdbcException
您可以使用這些類別的屬性來取得延伸資訊時發生錯誤。因為 SqlClient.NET 資料提供者關聯SQL Server,它可以提供在SqlException類別更多的伺服器專屬資訊,比OleDbExceptionOdbcException類別會提供。協力廠商的.NET 資料提供者有其自身的自訂例外狀況類別。

輕度嚴重伺服器錯誤或警告以訊息傳回。若要處理這些輕度嚴重伺服器錯誤,將事件加入Connection.InfoMessage事件處理常式。其他類型的例外狀況,例如InvalidArgumentException,直接從.NET 資料提供者引發類別。

如果要判斷的屬性,公開 (expose) 每個例外狀況,例外狀況類別,Visual Studio.NET 線上說明中的查詢。您也可以若要了解哪些方法以及所引發的例外狀況的特定用法的查詢情況。

若要確保您不要洩露昂貴的系統資源,請關閉任何開啟的連線DataReader物件最後的子句中的例外狀況處理常式。這些系統資源在下一步的廢棄項目收集,或應用程式關閉時清除向下。不過,您可能會耗盡資源資料庫,該時間之前。

Visual Studio.NET 線上說明] 文件
SqlException 類別
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception (v=vs.71).aspx

SqlError 類別
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlerror (v=vs.71).aspx

OleDbException 類別
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbexception (v=vs.71).aspx

OleDbError 類別
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledberror (v=vs.71).aspx
快速入門範例

錯誤處理的另一部分說明快速入門範例。

微軟知識庫文件
308043 HOW TO: 在 Visual Basic.NET 中使用 ADO.NET 取得基礎提供者錯誤
308650 HOW TO: 在視覺 C#.NET 中使用 ADO.NET 取得基礎提供者錯誤
308651 HOW TO: 在 Visual C++.NET 中使用 ADO.NET 取得基礎提供者錯誤

資料庫特性

某些資料庫需要特殊的技術,以執行某些作業。本節列出一些較常見的案例。

微軟知識庫文件
308071 HOW TO: 使用 OleDbDataReader 和 Visual Basic.NET 中存取 Oracle 資料庫
308448 HOW TO: 使用 OLE DB.NET 資料提供者和視覺化 C#.NET 存取 Oracle 資料庫
308073 HOW TO: 使用 DataReader 在 Oracle 中 Visual Basic.NET 預存程序
309361 HOW TO: 使用 DataReader 在 Oracle 中視覺化 C#.NET 預存程序
309362 HOW TO: 使用 DataReader 在 Oracle 中 Visual C++.NET 預存程序
按這裡來檢視有關 Oracle 的 How To 文件清單

達到.NET 資料提供者獨立

DAO 和 Jet 差異降到最低不同的資料庫系統。如此一來,您也可以移植到另一個應用程式從一個資料庫以極少的變更。(Rdo) 和 ADO 移除 Jet 仲介的角色是好的效能,並公開 (expose) 更多伺服器特有的功能。不過,這就更難移植應用程式資料庫之間。

ADO.NET 可以改善效能的其他資訊,但是 ADO.NET 中包含的個別類別的每個.NET 資料提供者中。不過,您可以使用標準的介面,並找出執行 「 原廠 」 函式來將程式碼數量降至最低的初始化程式碼您必須變更。此外,資料集物件提供集中式物件的資料繫結和遠端處理這就是提供者無關。

Visual Studio.NET 線上說明] 文件
撰寫.NET 資料提供者的常見程式碼
http://msdn.microsoft.com/en-us/library/aa720704 (v=vs.71).aspx
微軟知識庫文件
308046 HOW TO: 使用基底類別,以減少分支與受管理的提供者,在 Visual Basic.NET 中的程式碼
313304 HOW TO: 使用基底類別,以減少程式碼使用視覺 C#.NET 分支

撰寫.NET 資料提供者

如果您撰寫的.NET 資料提供者,您可以為其存取資料沒有任何的 OLE DB 提供者或 ODBC 驅動程式。您也可以撰寫資料提供者最適合特定的資料庫。

因為資料提供者會管理資料集(不同於 ADO資料錄集,其中操作 OLE DB 提供者),還有不一致性需求。您可以撰寫一個函式,讀取資料,並將資料加入資料集。或者,您可以用,以此類推來撰寫更完整的資料提供者處理連接物件。

Visual Studio.NET 線上說明] 文件
實作.NET 資料提供者
http://msdn.microsoft.com/en-us/library/4ksaf9z5 (v=vs.71).aspx

實作連接
http://msdn.microsoft.com/en-us/library/6sc13hd1 (v=vs.71).aspx

實作命令
http://msdn.microsoft.com/en-us/library/efdwa0z6 (v=vs.71).aspx

實作 DataReader
http://msdn.microsoft.com/en-us/library/5awcy9t0 (v=vs.71).aspx

實作資料配接器
http://msdn.microsoft.com/en-us/library/08a1x80z (v=vs.71).aspx

.NET 資料提供者範例
http://msdn.microsoft.com/en-us/library/26xsd945 (v=vs.71).aspx
MSDN 文件
ADO.NET: 建立自訂的資料提供者,以便在使用.NET 資料存取架構 (MSDN 雜誌)
http://msdn.microsoft.com/en-us/magazine/cc301611.aspx

疑難排解

如果您遇到問題,並且需要問題的解答,請參閱 MSDN 新聞群組。MSDN 新聞群組是以取得最佳的起點問題的解答。您可以在 MSDN 新聞群組,在共用程式與您的對等項目或搜尋 「 Microsoft 知識庫 」 文件的經驗有關特定問題。
MSDN 新聞群組
http://msdn.microsoft.com/newsgroups/

Microsoft 知識庫 」
http://support.microsoft.com/search

屬性

文章編號: 313480 - 上次校閱: 2013年6月28日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft ADO.NET 1.1
關鍵字:?
kbarttyperoadmap kbinfo kboracle kbsqlclient kbsystemdata kbmt KB313480 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:313480
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。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