目前了解C#中連接Oracle數據庫的方法有3種,分布是微軟的System.Data.OracleClient,Oracle的Oracle.DataAccess.Client和Oracle的Oracle.ManagedDataAccess.dll(最優)
(1).System.Data.OracleClient
.微軟的System.Data.OracleClient可以直接引用,但是VS會提示“System.Data.OracleClient.OracleConnection”已過時,這表明微軟自己都不建議使用了,所以知道就可以了,不必使用
(2).Oracle.DataAccess.Client
C#使用Oracle.DataAccess.Client也叫ODP.net,他是Oracle提供的數據庫訪問類庫,其功能和效率上都有所保證,它還有一個非常方便特性:在客戶端上,可以不用安裝Oracle客戶端,直接拷貝即可使用。由於微軟在.net framework4中會將System.Data.OracleClient.dll deprecated,而且就訪問效率和速度而言,System.Data.OracleClient.dll與Oracle.DataAccess.dll相比,微軟的確實沒有oracle提供的類庫有優勢,所以我放棄了使用多年的System.Data.OracleClient.dll,取而代之的是odp.net。然而odp.net的優點不止這些,還包括:
1.不在安裝客戶端也能訪問服務器上的oracle(假設Application Server與DB Server 分開)
2.不需要配置TnsNames.Ora文件
具體的使用方法請參考這位大俠的 http://blog.csdn.net/rrrrssss00/article/details/7178515/
還有這位大俠的 http://blog.csdn.net/sumirry/article/details/46746331
如果項目要從System.Data.OracleClient.OracleConnection轉Oracle.DataAccess.Client時,只需要在oracle 安裝目錄下 找到 Oracle.DataAccess.dll添加引用,后 using Oracle.DataAccess.Client;
其他的都不用動,即可。
連接字符串中 如有 用的是 user=xxx 就改成user id=xxx把原來 Using 的System.Data.OracleClient去掉即可。
(3).Oracle.ManagedDataAccess.dll
重點學習最后一種Oracle.ManagedDataAccess.dll,第二種的優點很多,但是也有缺點,就是要區分用區分x86/x64版本。
下載dll和使用方法參考這位大俠的 http://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html.
使用方法:
1.dll下載:http://files.cnblogs.com/yjmyzz/Oracle.ManagedDataAccess.zip
2.可以直接添加引用
3.使用代碼:
1 using System; 2 using System.Data; 3 using Oracle.ManagedDataAccess.Client; 4 5 namespace ODP.NET 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 OracleConnection conn = null; 12 try 13 { 14 conn = OpenConn(); 15 var cmd = conn.CreateCommand(); 16 cmd.CommandText = "select * from s_awb_master where rownum=1"; 17 cmd.CommandType = CommandType.Text; 18 var reader = cmd.ExecuteReader(); 19 while (reader.Read()) 20 { 21 Console.WriteLine(string.Format("AwbPre:{0},AwbNo:{1}", reader["AwbPre"], reader["AwbNo"])); 22 } 23 } 24 catch (Exception ex) 25 { 26 Console.WriteLine(ex.Message); 27 } 28 finally 29 { 30 CloseConn(conn); 31 } 32 Console.Read(); 33 } 34 35 36 static OracleConnection OpenConn() 37 { 38 OracleConnection conn = new OracleConnection(); 39 conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=***)));Persist Security Info=True;User ID=***;Password=***;"; 40 conn.Open(); 41 return conn; 42 } 43 44 static void CloseConn(OracleConnection conn) 45 { 46 if (conn == null) { return; } 47 try 48 { 49 if (conn.State != ConnectionState.Closed) 50 { 51 conn.Close(); 52 } 53 } 54 catch (Exception e) 55 { 56 Console.WriteLine(e.Message); 57 } 58 finally 59 { 60 conn.Dispose(); 61 } 62 } 63 } 64 }
**使用方法:https://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html
摘自:https://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html
https://www.cnblogs.com/masonlu/p/7514942.html