2009-01-30 43 views
7

我必须在C#中开发一个工具来从Oracle DB中检索一些数据。由于我们的IT支持在安装Oracle客户端时遇到了一些麻烦,我希望能够在不安装客户端的情况下连接到数据库。 这个想法是只安装(也许注册)一个额外的库与应用程序一起。.net的替代Oracle驱动程序

Oracle客户端有哪些替代方案,他们的优缺点是什么?

这是一个小应用程序(1格式,2或3个查询,结果显示在DataGrid中,可能不超过10-20个数据集),但我也对可伸缩性问题感兴趣,因为我们也可能从更大的未来项目中脱离Oracle客户。

当然免费软件解决方案会很好,但我们并不仅限于此。

回答

8

Oracle ODP.Net driver有几种不同的口味。你试图使用哪个版本?

听起来你想要Oracle 11g ODAC 11.1.0.6.21和Xcopy Deployment,它允许你通过复制一些DLLs并注册它们来部署Oracle Instant Client和ODP.Net驱动程序。这并不需要完整的Oracle客户端安装。

0

企业库客户端System.Data.OracleClient是Oracle提供的ODP.NET提供程序的可行替代方案。尽管你应该知道severla的注意事项,但使用Microsoft客户端将使得使用任何类型的大对象(无论它们是XML字符串,CLOB,LOB还是BLOB)都非常困难。此外,Oracle XmlType列不受支持,必须转储到CLOB才能返回到OracleClient。

+0

如果您确实需要使用LOB,我写了一篇关于此主题的博客文章:http://dotnetchris.wordpress。com/2008/04/10/writting-lobs-clobs-to-oracle-using-c-aspnet-20/IMO这是最好的可行解决方案,只要确保你有连接池工作使用它。 – 2009-01-30 15:34:57

+0

来自MSDN for System.Data.OracleClient:“您还必须安装Oracle 8i Client或更高版本。”正是我想避免的,恐怕... – Treb 2009-02-02 11:55:12

+0

现在MS也不推荐使用OracleClient。 – gbjbaanb 2009-06-26 08:50:35

9

你的任务,而不需要任何第三方软件来实现:

  1. 在您的开发盒上安装Oracle Data Access Components 11g。 ODAC 11g向后兼容9i和10g
  2. 在.NET项目(Oracle.DataAccess.dll)中添加对ODAC库的引用。
  3. 允许您的应用程序在不使用TNSNAMES.ORA的情况下连接。为此,必须在连接字符串中包含连接描述符:

    “user id = scott; password = tiger; data source =”+ “(DESCRIPTION =(ADDRESS =(PROTOCOL = tcp) “(HOST =销售服务器)(PORT = 1521))(CONNECT_DATA =” + “(SERVICE_NAME = sales.us.acme.com)))”

因为你是包括连接描述符在连接字符串中,目标计算机中不需要瘦客户机。

快乐部署。

3

Oracle目前拥有一个完全托管的ODP.NET版本,允许开发人员在引用一个DLL的同时连接到Oracle数据库。还有更多的信息here

当前版本可以找到here