2009-07-02 5 views
1

ODBC経由でOracleに接続する方法が混乱します。Windows ODBCデータソースと.Net System.Data.Odbc:どのドライバが使用されていますか?

コントロールパネル>管理ツールで "oracle"という名前のODBCデータソースを作成し、ドライバ "Microsoft ODBC for Oracle"を使用しました。私はapp.configで

、私は次の接続文字列私は、接続文字列のmaConnectionString(最初の1)を使用して、私のコードでは

<?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> 

を持っています。私は下に使用されているものドライバに混乱しています。Oracleため

  1. のMicrosoft ODBC
  2. System.Data.Odbc
  3. これら二つは同じですか?
  4. または、私がドライバにアクセスする際のSystem.Data.Odbcクラスはありますか?私は、Microsoftが作成したOracle用ODBCアクセスの実装である "Oracle用Microsoft ODBC"ですか?
  5. 他に何かありますか?

私は(オラクル、SQL Serverのは、MySQLの方)データベースにSystem.Data.Odbc名前空間に接続するためにODBCデータソースを定義していることがが必要ですか?

ありがとうございます!

答えて

1

説明した設定では、の両方とも「ドライバ」を使用します。技術的には、System.Data.Odbcはドライバではなく、providerです。

何が起きているのかを理解するには、管理側(.Net)をネイティブ側(ODBC)から分離する必要があります。 Oracle用のMicrosoft ODBCドライバは、ODBC用のドライバです。これにより、ODBCがOracleに接続できるすべてのアプリケーションが可能になります。 ODBCはネイティブテクノロジです。 otehrの手で.Net Framworkはデータプロバイダのために管理されたデータプロバイダを使用します。そのようなプロバイダーの1つは、.Netアプリケーションが任意のODBCデータソースに接続できるようにするSystem.Data.Odbcプロバイダーです。したがって、管理対象アプリケーションがmaConenctionStringに接続すると、System.Data.Odbcプロバイダを使用して 'oracle'という名前のODBCソースに接続し、ODBCマネージャは実際のバックエンドに接続するためにOracle用のMicrosoft ODBCドライバをロードします。

ここではit is recommended you use native providers whenever possibleとなりました。したがって、ODBCプロバイダを経由してODBCデータソースに接続するのではなく、.Net Managed Provider for Oracle(古いフレームワークの場合)または新しいSystem.Data.OracleClientのようなそれぞれのネイティブプロバイダを直接使用する方がはるかに優れています。

関連する問題