Pergunta

Estou confuso sobre como se conectar a Oracle via ODBC.

Eu criei uma fonte de dados ODBC com o nome " do Oracle " Na minha Painel de Controle> Ferramentas Administrativas e usado o driver "Microsoft ODBC para Oracle".

Na minha app.config, eu tenho as seguintes cadeias de conexão

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

No meu código eu uso o maConnectionString seqüência de conexão (o primeiro). Estou confuso sobre qual driver está sendo usado por baixo:

  1. Microsoft ODBC para Oracle
  2. System.Data.Odbc
  3. Esses dois o mesmo?
  4. Ou as classes System.Data.Odbc através do qual eu estou acessando o motorista? Quero dizer, é "Microsoft ODBC para Oracle" uma implementação do acesso ODBC para Oracle, criado pela Microsoft?
  5. Algo mais?

Do I necessidade ter definido uma fonte de dados ODBC para se conectar com System.Data.Odbc namespace para um banco de dados (o que de Oracle, SQL Server, MySQL)?

Obrigado!

Foi útil?

Solução

Na configuração que você descreveu você vai usar ambos 'pilotos. Tecnicamente, System.Data.Odbc não é um driver, é um provedor .

Para entender o que está acontecendo você precisa separar o lado gerenciado (.NET) do lado nativo (ODBC). O driver ODBC Microsoft para Oracle é um driver para ODBC. Ele permite que qualquer aplicativo capaz de ODBC para ligar a Oracle. ODBC é uma nativa tecnologia. Na mão otehr usos .Net Framwork gerenciada provedor de dados para ele de acesso a dados. Um tal provedor é o provedor de System.Data.Odbc que permite que aplicativos .NET para se conectar a qualquer fonte de dados ODBC. Então, quando seus Ligações aplicativo gerenciado para maConenctionString ele usa o provedor System.Data.Odbc para se conectar à fonte de ODBC chamado 'oráculo' eo gerente ODBC irá carregar o driver ODBC Microsoft para Oracle para se conectar ao fim real de volta.

Agora que se disse é recomendável usar provedores nativos sempre que possível . Então, ao invés de conectar via o provedor de ODBC a uma fonte de dados ODBC, é muito melhor se você usar diretamente o provedor nativo respectiva como o . Provider Net gerenciado para Oracle (para os quadros mais antigos) ou o mais recente System.Data.OracleClient .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top