Pregunta

Estoy confundido acerca de cómo conectarse a Oracle a través de ODBC.

He creado una fuente de datos ODBC denominado " Oracle " en mi Panel de control> Herramientas administrativas, y se utiliza el controlador "Microsoft ODBC para Oracle".

En mi app.config, tengo las siguientes cadenas de conexión

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

En mi código que utiliza el maConnectionString cadena de conexión (la primera). Soy confundir el controlador está siendo utilizado por debajo de:

  1. Microsoft ODBC para Oracle
  2. System.Data.Odbc
  3. ¿Son estos dos iguales?
  4. O son las clases System.Data.Odbc a través del cual accedo al conductor? Es decir, es "Microsoft ODBC para Oracle" una implementación del acceso ODBC para Oracle, creado por Microsoft?
  5. Algo más?

¿Debo necesidad haber definido un origen de datos ODBC que se conecta con el espacio de nombres System.Data.Odbc a una base de datos (el que sea de Oracle, SQL Server, MySQL)?

Gracias!

¿Fue útil?

Solución

En la configuración que ha descrito que va a utilizar ambos 'motores'. Técnicamente, System.Data.Odbc no es un conductor, es una proveedor .

Para entender lo que está pasando necesita separar el lado gestionado (.Net) desde el lado nativo (ODBC). El controlador ODBC de Microsoft para Oracle es un controlador para ODBC. Permite a cualquier aplicación capaz de ODBC para conectarse a Oracle. ODBC es un nativa tecnología. En la mano otehr .Net Framwork utiliza Gestionado proveedor de datos por su acceso a los datos. Un proveedor es el proveedor System.Data.Odbc que permite a las aplicaciones .NET para conectarse a cualquier fuente de datos ODBC. Así que cuando su aplicación administrada se conecta a maConenctionString que utiliza el proveedor System.Data.Odbc para conectarse a la fuente ODBC llamado 'oráculo' y el gestor de ODBC se carga el controlador ODBC de Microsoft para Oracle para conectarse a la parte final real.

Ahora que se dice se recomienda el uso de proveedores nativos siempre que sea posible . Así que en lugar de conectar a través del proveedor de ODBC a una fuente de datos ODBC, es mucho mejor si se utiliza directamente el respectivo proveedor nativo como el . proveedor administrado para Oracle Net (para marcos antiguos) o el nuevo System.Data.OracleClient .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top