天天看點

C# 使用oledb 方式連接配接本地或者遠端oracel 資料庫的方式

對于c# 進行oracle 資料庫的開發來說使用oracle 提供的odp.net 方式是比較友善的,同時在性能以及相容性也是比較好的

但是,對于不打算使用的,那麼該如何使用oledb 進行連接配接

連接配接的方式大家可定都比較了解就是ado.net 但是最重要的是連接配接字元串是怎麼樣的。

先貼測試代碼:

using (oledbconnection ole = new

oledbconnection(tep))

{

oledbcommand cmd = new oledbcommand("select * from

firstclass");

cmd.connection =

ole;

oledbdataadapter dr = new

oledbdataadapter(cmd);

dataset ds = new

dataset();

dr.fill(ds);

datagridview1.datasource =

ds.tables[0];

            }

大家可以看到是很簡單的,但是上面的tep 即連接配接字元串改何如寫呢。

一般有一下幾種使用dsn 的方式進行配置并寫好,但是對于不太了解odbc 配置的人員會比較費時。

如何使用根據odp.net 的連接配接方式然後根據vs 的調試提示,擷取連接配接字元串呢?比較簡單

我的擷取方式是如下的:

1. odp.net 的連接配接名稱

  string connstring = @"data

source=(description=(address=(protocol=tcp)(host=127.0.0.1)(port=1521))

(connect_data=(sid=orcl)));user id=appserveruser;password=1234;";

以上為odp方式的連接配接字元串

2. 我們預設就使用這個進行調試

這是vs 的提示

C# 使用oledb 方式連接配接本地或者遠端oracel 資料庫的方式

 也就是我們沒有提供provider 簡單我們加上示例的先試試

3. 加上的測試

     這是加上的連接配接字元串   string tep = "data

source=(description =(address_list =(address = (protocol = tcp)(host =

127.0.0.1)(port = 1521)))(connect_data =(service_name = orcl)));user

id=appserveruser;password=1234;provider=sqloledb;";

4. vs 調試的提示

C# 使用oledb 方式連接配接本地或者遠端oracel 資料庫的方式

比較詭異的是我們使用的是oracle但是提示的是sql server 為什麼?

5. 原因是我們使用的provider 并不是oracle 的

6.解決方式

 使用oracle的provider 名稱

應該是如下的:

provider=oraoledb.oracle;

7.最終的連接配接字元串

string tep = "data source=(description =(address_list =(address = (protocol =

tcp)(host = 127.0.0.1)(port = 1521)))(connect_data =(service_name = orcl)));user

id=appserveruser;password=1234;provider=oraoledb.oracle;";

8.使用vs

進行調試

C# 使用oledb 方式連接配接本地或者遠端oracel 資料庫的方式

ok

資料擷取成功

使用這種方式盡管是複雜了,但是這種方式可以擷取遠端以及本地的oracle

資料庫

大家如果注意的話,這裡的連接配接字元串是根據

tnsnames.ora 檔案的格式擷取的,實際上 這個檔案的配置才是連接配接oracle 資料

庫最重要的配置。希望對大家有幫助。

繼續閱讀