我对如何通过 ODBC 连接到 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. 系统数据.ODBC
  3. 这两个是一样的吗?
  4. 或者是我用来访问驱动程序的 System.Data.Odbc 类?我的意思是,“Microsoft ODBC for Oracle”是 Microsoft 创建的 Oracle ODBC 访问实现吗?
  5. 还有别的事吗?

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

谢谢!

有帮助吗?

解决方案

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

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

既然这么说 建议您尽可能使用本机提供程序. 。因此,如果您直接使用相应的本机提供程序(如 Oracle .Net 托管提供商 (对于较旧的框架)或较新的框架 系统.数据.OracleClient.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top