VS2010中用微軟自帶的System.Data.OracleClient來連線Oracle資料庫
由於微軟在.Net
框架4.0中已經決定撤銷使用System.Data.OracleClient
,造成在VS2010
中無法連線Oracle
資料庫,但它還依舊存在於.Net
架構中,我們可以通過自己引用
C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll
來獲得對Oracle
資料庫的支援。
方法:
1、在VS2010
中開啟[解決方案管理器]--右擊[引用]--[新增引用]
2、選擇[瀏覽]找到“C:\Windows\Microsoft.NET\Framework\v2.0.50727
”目錄,在下面選擇System.Data.OracleClient.dll
之後就可以在程式編輯視窗使用using System.Data.OracleClient
了
另外:微軟決定撤銷System.Data.OracleClient
內容如下:
對於那些開發.Net
應用程式而資料庫又是Oracle
的人來說,這則新聞顯得特別有意義,微軟正打算將Oracle
資料提供程式從ADO.NET
路線圖中移除。
微軟決定撤銷System.Data.OracleClient
是因為有相當數量的MVP
都傾向於選擇第三方Oracle
資料提供程式,負責 ADO.NET OracleClient
的產品經理Himanshu Vasishth
在ADO.NET
團隊部落格文章中宣佈了這一決定。
但在.Net框架4.0中微軟將會繼續支援System.Data.OracleClient
,但會被標記為“不宜使用”,根據Vasishth
的說法,這對現有的應用程式沒有任何影響,它們將會按預期運轉得很好。
他在文章中提到“使用OracleClient
開發新的應用程式仍然是可行的,但在.Net 4.0
中編譯時會彈出一個警告對話方塊,編譯好後,執行時不會再彈出警告對話方塊,我們強烈建議使用者使用我們合作伙伴的ADO.NET Provider for Oracle
代替微軟OracleClient
進行新應用程式的開發”。
第三方提供Oracle
資料提供程式的有DataDirect
和Devart
科技公司,此外還有Oracle
公司的資料提供程式,叫做Oracle Data Provider for .NET (ODP.NET)
,這些都是很流行的Oracle
資料庫提供程式。
位於紐約的新技術公司twentysix執行長 Andrew Brust
在一封電子郵件中說“Oracle
自身對ADO.NET
的支援以及Visual Studio
本身已經被人們普遍看好,Oracle
公司有一個專職的ADO.NET
團隊,他們已經做得非常好了”。
微軟最有價值專家本傑明認為微軟這個決定非常有意義,微軟為社麼要卑躬屈膝支援連線到競爭對手的資料庫呢?特別是有調查資料顯示微軟的客戶都傾向於轉向Oracle
,微軟肯定會不爽。同時,這也省去了微軟.Net
到Oracle
的版本控制或效能問題。
微軟表示將繼續提供bug
修復和關鍵更新,但這一切都僅限於.Net
框架4.0中,以後就難說了
連線oracle
資料庫異常System.Data.OracleClient
需要 Oracle
客戶端軟體 8.1.7
或更高版本
本人在用公司用C#
寫的服務連線資料庫oracle
時,報出上面的錯誤:連線oracle
資料庫異常System.Data.OracleClient
需要 Oracle
客戶端軟體 8.1.7 或更高版本。在網上查了好多,試了都沒有用,但是通過網上查詢,說是找不到oracle
的oci.dll
檔案,故在系統環境配置中,PATH
中加上我自己oracle client
的安裝路徑:D:\app\admin\product\11.2.0\client_1\BIN;
即可,如果PATH
中之前本來有內容,則在D:\app\admin\product\11.2.0\client_1\BIN
此目錄前加上;
一、點選 “高階系統設定”;
二、點選環境變數
三、編輯修改
asp.net
連線oracle
,報錯誤。“System.Data.OracleClient
需要 Oracle
客戶端軟體 8.1.7 或更高版本。
使用Oracle
資料庫不一定要安裝客戶端
System.Data.OracleClient
需要Oracle
客戶端軟體 8.1.7 或更高版本。
解決方法
1.下載instantclient_11_2
,解壓到任意目錄下
2.在配置一下環境變數。
系統變數:在Path
中,加入dll
的路徑;eg:D:\Program Files\PremiumSoft\Navicat Premium\instantclient_11_2
使用者變數:加一個ORACLE_HOME
,也是這個路徑;
3.重啟電腦(重要)
1.Navicat Premium
配置連線Oracle
資料庫,
可能出現的錯誤:
1.連線資料庫`cannot load OCI DLL,193`
1.還有一個可能就是`126`的錯誤,都是這個`oci.dll`問題導致
C#實現不安裝Oracle
客戶端訪問遠端伺服器資料
在未安裝Oracle資料庫客戶端的前提下,C#通過使用ADO的方式遠端訪問伺服器,會出現:“System.Data.OracleClient 需要 Oracle 客戶端軟體 8.1.7 或更高版本”問題,本文提供一種方式解決該問題。
具體步驟步驟如下:
第一步:下載Instant Client
檔案
Oracle官方網站提供了Instant Client
檔案的下載,下載地址為:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,裡面提供了支援不同作業系統和不同Oracle
版本的對應下載,根據不同需求自己選擇。
我的系統環境如下:
資料庫伺服器:WindowsServer2008x64
資料庫服務端:oracle11.2.0.1.0
客戶端系統:Windows7x64
因此我選擇下載了instantclient-basic-win-x86-64-11.2.0.1.0.zip
只需在客戶端將其解壓即可(位置任意),我解壓在d盤根目錄,生成一個資料夾d:\instantclient_11_2
(然後將其修改成oracleclient
,根據自己需要修改),裡面就是連線遠端資料庫要用到的dll檔案。
第二步:配置環境變數
1、 在PATH
變數中增加【;D:\oracleclient
】,即就是剛才我們解壓Instant Client
所在的目錄;
2、增加以下三個變數:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN= D:\oracleclient
LD_LIBRARY_PATH= D:\oracleclient
第三步:配置tnsnames.ora
檔案
在 D:\oracleclient
目錄中增加一個tnsnames.ora
檔案,內容為訪問資料庫的配置資訊。具體步驟為:新建一個txt
文件,然後將一下內容複製進去,另存為tnsnames.ora
即可。
ORCL=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.1.107)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SERVICE_NAME = lottery)
)
)
其中的HOST、PORT、SERVICE_NAME
需要根據資料庫實際資訊進行修改。
說明,以下需要根據實際情況修改:
HOST = 伺服器地址IP 或伺服器名稱
PORT = 伺服器埠號,預設為“1521“
SERVICE_NAME = 伺服器資料庫服務的名字,預設為:”orcl“
此時在C#程式碼中的連線字串可以按如下方式定義:
String conn = @"DataSource=ORCL;Persist Security Info=True;User Id=使用者名稱;Password=密碼";
否則,如果想省略第三步,在C#程式碼中的連線字串必須按如下方式定義:
String conn = String.Format("Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA=(SERVICE_NAME = lottery) ) );User Id=使用者名稱;Password=密碼;");
第四步:重啟系統
C#程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
namespace TestOracle
{
class Program
{
static void Main(string[] args)
{
String conn = @"Data Source=ORCL;Persist Security Info=True;User Id=testdb;Password=manager";
String conn1 = String.Format("Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.107)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = lottery) ) );User Id=testdb;Password=manager;");
OracleConnection oc = new OracleConnection(conn);
try
{
oc.Open();
OracleCommand cmd = oc.CreateCommand();
cmd.CommandText = "select sysdate from dual";
OracleDataReader odr = cmd.ExecuteReader();
while (odr.Read())
{
Console.WriteLine(odr.GetDateTime(0).ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
oc.Close();
}
Console.Read();
}
}
}
執行結果:
相關文章
- 資料來源連線資料庫資料庫
- Oracle連線MongoDB資料庫OracleMongoDB資料庫
- Oracle資料庫連線方式Oracle資料庫
- Java連線oracle資料庫JavaOracle資料庫
- 請教。在ejb中用DataSource連線資料庫,報錯!資料庫
- .Net與Oracle的資料庫連線Oracle資料庫
- Sequelize 連線微軟雲資料庫 SQL Azure微軟資料庫SQL
- 【Oracle】Python 連線Oracle 資料庫OraclePython資料庫
- Oracle自動斷開資料庫連線的解決辦法Oracle資料庫
- 帶你進入資料庫連線池資料庫
- java Jdbc連線oracle資料庫連線測試JavaJDBCOracle資料庫
- Python 連線 Oracle資料庫PythonOracle資料庫
- [Navicate]Navicate連線Oracle資料庫Oracle資料庫
- Python連線oracle資料庫PythonOracle資料庫
- oracle資料庫修改連線數Oracle資料庫
- NodeJs連線Oracle資料庫NodeJSOracle資料庫
- PLSQL連線oracle資料庫配置SQLOracle資料庫
- WebSphere中的Oracle資料來源設定------JSP和Oracle資料庫的連線 (轉)WebOracleJS資料庫
- 自定義帶監控的資料庫連線池資料庫
- 藉助Windows自帶的ODBC工具驗證資料庫連線是否通暢Windows資料庫
- 【Java】Spring和Tomcat自帶的連線池實現資料庫操作JavaSpringTomcat資料庫
- java連線Oracle資料庫獲取資料JavaOracle資料庫
- Oracle dos連線資料庫基本操作Oracle資料庫
- 使用instantclient連線oracle資料庫clientOracle資料庫
- ORACLE 配置連線遠端資料庫Oracle資料庫
- 資料庫的連線資料庫
- 使用RMySQL包來連線MySQL資料庫MySql資料庫
- jdbc連線oracle rac資料庫的寫法JDBCOracle資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 如何設定Struts 連線資料庫的公共類,作個公共的類,來連線資料庫,如何寫???資料庫
- 連線資料庫資料庫
- 資料庫連線資料庫
- Oracle RMAN 連線資料庫認證方法Oracle資料庫
- python3.4連線oracle資料庫PythonOracle資料庫
- python3.6連線oracle資料庫PythonOracle資料庫
- 使用oracle Transparent gateway 連線 sybase 資料庫OracleGateway資料庫
- 使用ssh tunnels加密連線oracle資料庫加密Oracle資料庫
- 各種連線資料庫的連線字串資料庫字串