【问题标题】:C#/Oracle: ConnectC#/Oracle:连接
【发布时间】:2011-09-26 14:56:53
【问题描述】:

我一直在尝试找出如何将 c# 程序与 oracle 10g db 连接起来。我发现的所有代码示例总是使用 .net-framework 的 ado.net oracleclient(已弃用-> 不好),或 system.data.ado,它显然使用数据源(odbc)-> 不允许使用,或 oracle 开发人员工具 odt(如 odbc?),它支持 olny Visual Studio 2005 的 10g 和仅 11g 的 vs 2010 ......有什么方法可以连接,就像使用 delphi (devart,odac)一样在我被告知要研究连接 c# 和 oracle 的可能性之前使用过吗?

【问题讨论】:

  • 请参阅下面我对 V4Vendetta 的评论,它应该可以工作。请发布您对 VS2010 的问题,但它确实支持它。你有什么问题让你相信最新版本的 ODP 不适用于 vs2010 和 10g?您需要使用 11g 客户端软件,但这将连接到 10g(和 9i)(oracle.com/technetwork/database/windows/…

标签: c# oracle oracle10g database-connection


【解决方案1】:

我认为最好的方法是使用ODP.NET 在 oracle 数据库上执行您的操作。

这对你来说也可能是一个有趣的read

【讨论】:

  • odp 11 适用于 oracle 11g,我猜?我有一个 10g 的数据库,但是 vs 2010
  • 也有10g的,链接供参考
  • 你的意思是说它不适用于 Framework 4.0,无论如何它们都是为向后兼容而构建的,所以应该不是问题
  • @Eike Cochu ODP 它可用于 4.0 框架(32 位和 64 位)。所有 ODP 均适用于 Oracle 9i 及更高版本。
  • 如果它在没有 11g 客户端的情况下工作(即使设置的右上角有一个很大的 11g 并且设置需要我的 11g 客户端安装路径)那么我很乐意安装它,谢谢!
【解决方案2】:

最简单的方法是使用System.Data.OleDb,它应该适用于任何版本的 Visual Studio 和 .Net Framework - 除非您需要执行 OleDb 不支持的任何特定于 Oracle 的查询。

恕我直言,您不必处理部署任何特殊的第 3 方数据库驱动程序。

【讨论】:

    【解决方案3】:

    connectionstrings.com/oracle 上,您可以找到多个提供程序的连接字符串示例。

    我会推荐像 ODP.NET 或 OracleClient 这样使用数据库本地接口的东西。

    不同数据库之间的数据类非常相似,所以你可以举个例子,使用SqlClient类(example)替换OracleClient类,并更改连接字符串。

    【讨论】:

    • OracleClient 已弃用,似乎 odp/odt/odac(都一样?) 10g 仅适用于 2005 年
    • @Eike Cochu:好的,看来 MS 正在放弃他们的实施。您可以将 ODP.NET 11 与 10g 服务器一起使用:stackoverflow.com/questions/454624/…
    【解决方案4】:

    我花了很长时间才意识到我的错误,我试图将 dotnet 应用程序从 X86 迁移到具有 oracle 数据访问依赖项的 X64。

    从 OracleConnection 转移到 OleDbConnection 后,oracle 连接问题刚刚解决,运行良好,谢谢!

    【讨论】:

      【解决方案5】:

      请看下面的代码;)

      using System;
      using System.Data;
      using System.Data.OleDb;
      
      class OleDbConnectionOracle
      {
        public static void Main()
        {
          string connectionString = "provider=MSDAORA;data source=ORCL;user id=SCOTT;password=TIGER";
          OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);
      
          OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();
      
          myOleDbCommand.CommandText = "SELECT empno, ename, sal FROM emp WHERE empno = 7369";
      
          myOleDbConnection.Open();
      
          OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();
      
          myOleDbDataReader.Read();
      
          myOleDbDataReader.Close();
          myOleDbConnection.Close();
        }
      }
      

      【讨论】:

      • 是的,谢谢,就是这样工作的,但是这个例子需要一个必须在系统偏好设置中设置的数据源,我无法为每个用户设置和维护这些数据源跨度>
      • 如果没有这个“数据源”,我永远无法连接成功,我认为您无法获得每个用户的“oracle 数据源”...
      • @Eike 这个 OleDb 连接不需要任何系统数据源配置。
      • 有吗?数据源是ORCL,必须事先设置好,不然这个程序怎么知道怎么连接db
      猜你喜欢
      • 2015-10-16
      • 2010-12-10
      • 2018-03-06
      • 2016-10-03
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多