對于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 的提示
也就是我們沒有提供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 調試的提示
比較詭異的是我們使用的是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
進行調試
ok
資料擷取成功
使用這種方式盡管是複雜了,但是這種方式可以擷取遠端以及本地的oracle
資料庫
大家如果注意的話,這裡的連接配接字元串是根據
tnsnames.ora 檔案的格式擷取的,實際上 這個檔案的配置才是連接配接oracle 資料
庫最重要的配置。希望對大家有幫助。