【问题标题】:Windows ODBC Datasources and .Net System.Data.Odbc: Which driver is used?Windows ODBC 数据源和 .Net System.Data.Odbc:使用哪个驱动程序?
【发布时间】:2009-07-02 13:18:59
【问题描述】:

我对如何通过 ODBC 连接到 Oracle 感到困惑。

我在“控制面板”>“管理工具”中创建了一个名为“oracle”的 ODBC 数据源,并使用了驱动程序“Microsoft ODBC for Oracle”。

在我的 app.config 中,我有以下连接字符串

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="MappingAssistantGui2.Properties.Settings.maConnectionString"
      connectionString="Dsn=oracle;uid=ma;pwd=ma" providerName="System.Data.Odbc" />
    <add name="MappingAssistantGui2.Properties.Settings.maConnectionStringSqlServer"
      connectionString="Dsn=sqlserver;uid=sli;pwd=slislisli" providerName="System.Data.Odbc" />
    <add name="MappingAssistantGui2.Properties.Settings.maConnectionStringOracle"
      connectionString="Dsn=oracle;uid=ma;pwd=ma" providerName="System.Data.Odbc" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

在我的代码中,我使用连接字符串 maConnectionString(第一个)。我对下面使用的驱动程序感到困惑:

  1. 适用于 Oracle 的 Microsoft ODBC
  2. System.Data.Odbc
  3. 这两个是一样的吗?
  4. 或者是我通过它访问驱动程序的 System.Data.Odbc 类吗?我的意思是,“Microsoft ODBC for Oracle”是 Microsoft 创建的 Oracle ODBC 访问实现吗?
  5. 还有别的吗?

我是否需要定义一个 ODBC 数据源以通过 System.Data.Odbc 命名空间连接到数据库(Oracle、SQL Server 和 MySQL 中的哪一个)?

谢谢!

【问题讨论】:

    标签: .net oracle odbc datasource driver


    【解决方案1】:

    在您描述的配置中,您将使用两个“驱动程序”。从技术上讲,System.Data.Odbc 不是驱动程序,而是provider

    要了解发生了什么,您需要将托管端 (.Net) 与本机端 (ODBC) 分开。 Microsoft ODBC Driver for Oracle 是 ODBC 的驱动程序。它允许任何支持 ODBC 的应用程序连接到 Oracle。 ODBC 是一种原生技术。另一方面,.Net Framwork 使用 managed 数据提供者进行数据访问。一个这样的提供者是 System.Data.Odbc 提供者,它允许 .Net 应用程序连接到任何 ODBC 数据源。因此,当您的托管应用程序连接到 maConenctionString 时,它使用 System.Data.Odbc 提供程序连接到名为“oracle”的 ODBC 源,并且 ODBC 管理器将加载 Microsoft ODBC Driver for Oracle 以连接到实际后端。

    现在说it is recommended you use native providers whenever possible。因此,与其通过 ODBC 提供程序连接到 ODBC 数据源,不如直接使用各自的本机提供程序,例如 .Net Managed Provider for Oracle(适用于较旧的框架)或较新的 System.Data.OracleClient

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 2018-10-26
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2021-09-28
      相关资源
      最近更新 更多