Windows ODBC数据源和.Net System.Data.Odbc:使用哪个驱动程序?
我很困惑如何通过ODBC连接到Oracle。Windows ODBC数据源和.Net System.Data.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(第一个)。我迷惑于正下方使用了什么驱动程序:
- 微软ODBC的Oracle
- System.Data.Odbc
- 是这两个一样的吗?
- 或者是我通过其访问驱动程序的System.Data.Odbc类?我的意思是,“Oracle的Microsoft ODBC”是由Microsoft创建的Oracle的ODBC访问实现?
- 还有别的吗?
难道我需要来定义一个ODBC数据源与System.Data.Odbc命名空间连接到数据库(两者的Oracle,SQL Server,MySQL发的)?
谢谢!
在您描述的配置中,您将使用两个'驱动程序'。从技术上讲,System.Data.Odbc不是驱动程序,是provider。
为了理解您需要将托管端(.Net)从本机端(ODBC)分离出来。用于Oracle的Microsoft ODBC驱动程序是用于ODBC的驱动程序。它允许任何具有ODBC能力的应用程序连接到Oracle。 ODBC是本地技术。在otehr的手上.Net Framwork使用管理的数据提供者进行数据访问。一个这样的提供者是允许.Net应用程序连接到任何ODBC数据源的System.Data.Odbc提供者。因此,当托管应用程序连接到maConenctionString时,它使用System.Data.Odbc提供程序连接到名为'oracle'的ODBC源,并且ODBC管理器将加载用于Oracle的Microsoft ODBC驱动程序以连接到实际后端。
现在说的是it is recommended you use native providers whenever possible。因此,如果直接使用各自的本机提供程序(如.Net Managed Provider for Oracle(适用于较旧的框架)或较新的System.Data.OracleClient),而不是通过ODBC提供程序连接到ODBC数据源。