網(wǎng)上有大量諸如 C#/.Net 連接 Oracle 的幾種方式之類的帖子,無非也就是介紹幾種驅(qū)動,大部分內(nèi)容還雷同。曾經(jīng)我只是想上網(wǎng)找一個適合手頭上項目訪問 Oracle 的方法,結(jié)果卻迷失在浩瀚如煙的相似帖子中望洋興嘆。隨著時間的推移,我逐漸理清了這里面的關(guān)系,本文將按我的理解介紹幾個常見的 .Net for Oracle 數(shù)據(jù)庫驅(qū)動,并重點分析我本人在使用 ODP.NET 中遇到的 3 類問題。

1、.Net for Oracle 常見數(shù)據(jù)庫驅(qū)動

數(shù)據(jù)庫驅(qū)動是由數(shù)據(jù)庫廠商或第三方數(shù)據(jù)庫驅(qū)動開發(fā)商為了某種開發(fā)語言(如 C#、Java)能夠方便的訪問某種數(shù)據(jù)庫(如 SQL Server、Oracle)而提供的接口程序。程序代碼一般都是通過數(shù)據(jù)庫驅(qū)動來訪問數(shù)據(jù)庫,其實 .Net 連接 Oracle 的方式也就一種——先選定一個數(shù)據(jù)庫驅(qū)動,然后按這個驅(qū)動的調(diào)用方法來連接數(shù)據(jù)庫。本節(jié)將分類逐一介紹 ODBC、OLE DB、ADO.NET、ODAC、ODP.NET、dotConnect for Oracle 共 6 個數(shù)據(jù)庫驅(qū)動。

1.1、微軟提供的驅(qū)動

微軟的數(shù)據(jù)庫訪問技術(shù)由來已久,可選的驅(qū)動也比較多。如果數(shù)據(jù)庫用的是 SQL Server,那么微軟提供的數(shù)據(jù)庫驅(qū)動將是不二選擇,但如果用的是 Oracle,情況就相對復雜了,下文會詳細說明。

ODBC:即開放數(shù)據(jù)庫互連(Open Database Connectivity),它定義了訪問數(shù)據(jù)庫 API 的一個規(guī)范,是 Mic