2009-07-02 83 views
1

我很困惑如何通過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(第一個)。我迷惑於正下方使用了什麼驅動程序:

  1. 微軟ODBC的Oracle
  2. System.Data.Odbc
  3. 是這兩個一樣的嗎?
  4. 或者是我通過其訪問驅動程序的System.Data.Odbc類?我的意思是,「Oracle的Microsoft ODBC」是由Microsoft創建的Oracle的ODBC訪問實現?
  5. 還有別的嗎?

難道我需要來定義一個ODBC數據源與System.Data.Odbc命名空間連接到數據庫(兩者的Oracle,SQL Server,MySQL發的)?

謝謝!

回答

1

在您描述的配置中,您將使用兩個'驅動程序'。從技術上講,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數據源。

相關問題