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

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

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

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

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

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