将C#连接到Oracle

时间:2009-10-26 18:48:02

标签: c# oracle

将C#(.NET)应用程序连接到Oracle 10g和11g的最佳库/驱动程序是什么 我找到的当前选项是:

  1. 数据库安装附带的Oracle客户端
  2. Oracle Instant Client(由于操作系统数量为6-8个版本,因此有点令人困惑)
  3. Microsoft ODBC? (这可以用吗?)
  4. ODP.Net - 是这个单独的产品还是包含在1.和2.?
  5. 有人可以解释一下差异吗?

    我正计划在Oracle数据库上执行基本CRUD操作的C#应用​​程序。哪个库/驱动程序最小且最容易安装?

    修改
    一般建议是使用ODP.Net。现在,有人可以解释或指出回答客户端安装包之间的差异。我为Oracle 11g找到了3个不同的客户端:

    那么,哪一个足够发展? Oracle文档非常详细,但没有说明这些客户端软件包之间的差异。我会选择最小的(即时客户端)。这是最好的选择吗?

    编辑2:
    我正在使用.Net 3.5

7 个答案:

答案 0 :(得分:7)

Microsoft将deprecate System.Client.OracleClient命名空间,因此我认为最好使用ODP.NET。确保下载最新版本(ODP.NET 11g),因为以前的版本存在一些问题。

答案 1 :(得分:5)

要将C#连接到oracle,您需要.net的数据提供程序。这可以是以下之一:

  • ODP.Net(Oracle)
  • System.Data.OracleClient(Microsoft)
  • ODBC(Oracle)
  • OLEDB(Oracle)
  • 适用于Oracle的DataDirect ADO.NET数据提供程序(DataDirect)
  • 可能是其他提供商

此数据提供程序的所有都需要安装oracle客户端。没有独立的库作为jdbc14.jar,就像在java中一样。您有2个选择部署oracle客户端:

  • 完整客户端(可能来自数据库安装)
  • 即时客户

ODP.Net,ODBC,OLEDB是完整客户端的一部分。这是“硬”方式,因为必须在运行软件的每个客户端上运行安装过程。这是客户端上最多兆字节的位置 instant client在不同的包中提供。这是部署oracle客户端的最小方式。

我建议将ODP.Net与Oracle Instant Client结合使用,因为这样易于部署且重量非常轻。

您需要哪些即时客户端软件包:

  • 选择版本11.1.0.6.0(或提供ODAC的更新版本)
  • Instant Client Package - 基本(如果您需要完整的语言支持)
  • 即时客户端软件包 - ODAC

关于使用c#应用程序部署oracle即时客户端,有很多关于stackoverflow的文章。

编辑:更新了链接和版本

答案 2 :(得分:4)

ODP.NET是访问Oracle数据库的最佳提供商,主要是因为它是最本机的,它通过以下方式区别于ODBC:

  • 更好的表现
  • ODP.NET提供对高级Oracle功能的访问,而不是通过ODBC .NET提供
  • ODP.NET不使用额外的数据访问桥。

也可以使用ODBC,但如上所述,它会变慢并且功能有限。

要使ODP.NET正常工作,您需要此处列出的软件(包括oracle客户端): http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install

希望这有帮助!

答案 3 :(得分:2)

也许我错了,但ADO.NET已经集成了对Oracle的支持。也许对于早期版本...

答案 4 :(得分:2)

我觉得odbc太慢了。 System.Data.OracleClient也有点慢,它将被Microsoft弃用。

你可以使用devart的提供者,有一个免费版本。它易于部署。见http://www.devart.com/dotconnect/oracle/它确实支持实体框架。

Odp.net速度很快,但它不支持实体框架,因此部署起来并不容易。

答案 5 :(得分:1)

我真的不能说你提供的解决方案之间存在差异,但我总是使用Oracle提供的Oracle数据访问组件,它总能完美运行。可在此处找到:ODAC for Visual Studio

可靠的是,Oracle在.NET Framework上开发的库比Oracle外部公司开发的库要准确得多。例如,关于访问Oracle数据库时抛出的异常,如果Oracle开发团队已经开发了这些库,那么它们会更有用,因为他们对Oracle数据库有额外的知识。

糟糕的是,如果您选择使用.NET System.Data.OracleClient,您将有一个依赖性问题,您不必克服这个问题。

希望这会有所帮助。问候。


编辑:ODAC包中包含ODP和Oracle Developer Tools

答案 6 :(得分:1)

ODP.NET是访问oracle db的本机提供程序。因此它应该更好地优化oracle db。此外,还有oracle特性,例如REF CURSOR类型,它们不受MS ODBC支持,但受ODP.NET支持。您也可以在www.aracle.com网站上下载ODAC,其中包括ODP.NET。