日期:2014-05-17  浏览次数:20874 次

讨论下C#连接Oracle数据库
最近准备优化一个服务器端的服务,使用到了连接Oracle数据库,而且分为测试环境和正式环境,两个环境连接字符串也不同。
我目前知道的只有三种,
1、引用System.Data.OracleClient命名空间,用OrcleConnection等类实现;可直接写sql语句执行操作,不过这种方式在4.0的版本中就提示过时了;这种换了环境只要换连接字符串就可以;
2、使用ADO.NET Entity连接,然后生成实体类。可以利用ESql语句或Linq查询进行数据库的操作;不过这种方式,每次使用起来比较麻烦,如果换一个环境,就要重新连接一次才可以;
3、也是最近才用过的,就是Microsoft.Practices.EnterpriseLibrary.Data.dll,这也是微软的一个企业库,也可直接进行sql语句的执行。这种换了环境和1一样,也只需换字符串;
我比较倾向于使用第三种,因为这个可以直接写sql语句,直观一些。
不知大家平时使用怎样的连接方式,交流交流经验...
------最佳解决方案--------------------
用Oracle公司提高的OPT.NET,那个最好,支持With嵌套查询。
------其他解决方案--------------------
表示一直在用Devart公司的dotConnect for Oracle,之前简单测试了一下,发现比微软和Oracle提供的驱动效率都要高
------其他解决方案--------------------
引用:
用Oracle公司提高的OPT.NET,那个最好,支持With嵌套查询。

是ODP.net吧,这个就是配合ADO.NET Entity用的啊,只有装了.net适配器,才能连接。
------其他解决方案--------------------
写错了,是ODP.NET,但不一定要用他的框架,ODP.NET的用法和System.Data.OracleClient下的类库用法几乎一样,看不出什么区别,可以无缝衔接,只要你把引用的类库更改下,那个已过时的提示就会消失,然后就是更改一些微小的区别之处,主要是数据类型的差异。
------其他解决方案--------------------
另外只要安装了Oracle客户端,在它的安装目录下面就可以找到这么一个文件夹,里面就有可以引用的dll:
product\11.2.0\client_1\odp.net
红色部分是版本号
------其他解决方案--------------------
我还是决定用ado.net entity了。