目前了解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.使用代码:
using System; using System.Data; using Oracle.ManagedDataAccess.Client; namespace ODP.NET { class Program { static void Main(string[] args) { OracleConnection conn = null; try { conn = OpenConn(); var cmd = conn.CreateCommand(); cmd.CommandText = "select * from s_awb_master where rownum=1"; cmd.CommandType = CommandType.Text; var reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(string.Format("AwbPre:{0},AwbNo:{1}", reader["AwbPre"], reader["AwbNo"])); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { CloseConn(conn); } Console.Read(); } static OracleConnection OpenConn() { OracleConnection conn = new OracleConnection(); conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=***)));Persist Security Info=True;User ID=***;Password=***;"; conn.Open(); return conn; } static void CloseConn(OracleConnection conn) { if (conn == null) { return; } try { if (conn.State != ConnectionState.Closed) { conn.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { conn.Dispose(); } } } }
**使用方法: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