2009-07-24 18 views
7

me encontré con esta pregunta aquí: OLEDB v/s ODBC¿Cuál es la diferencia entre ODBC y OleDB?

Lo que me dio más información, pero realmente no responder a la pregunta que estoy haciendo, por lo que se procederá a partir de ahí.

Estoy trabajando en C#. Te ahorraré la larga historia sobre cómo llegué a este enigma, pero básicamente estoy tratando de decidir entre ODBC y oleDB.

Trabajamos con una gran cantidad de clientes que tienen muy variadas bases de datos SQL (algunos, algunos de Oracle, alguna otra cosa que nunca he oído hablar y no se molestó en recordar el nombre de)

Ahora , por lo que entiendo, ODBC es viejo, y era/es el estándar. Y ahora OleDB ha venido y ... es ... diferente? pero logra lo mismo (habla con bases de datos)

¿Por qué querría usar uno sobre el otro? ODBC es (de acuerdo con el post anterior) multiplataforma, lo cual es bueno, pero ofrece muy poca información sobre lo que OleDB ofrece que ODBC no ofrece.

En mi otra investigación, encontré (en los foros de MSDN) Personas que decían "usa OleDB si puedes, si es necesario, recurrir a ODBC" Naturalmente, no hay tres razones para esto, así que me gusta escuchar algo

Respuesta

16

ODBC es una API C para acceder a las bases de datos. Hay un estándar para esto, es compatible con todos los principales proveedores de bases de datos, está muy bien documentado, es multiplataforma. OLEDB es una interfaz similar que utiliza la tecnología COM de Microsoft en lugar de la API C. Esto significa que solo se puede usar fácilmente en plataformas compatibles con COM.

Al final del día, ambas bibliotecas proporcionan una funcionalidad básica más o menos equivalente. De hecho, algunos controladores OLEDB realmente hacen uso de ODBC en lugar de bibliotecas de bases de datos nativas.

Por lo tanto, si usted es desarrollador de C#, trabaja en Windows, OLEDB es la elección obvia entre los dos. Si está utilizando C (o C++ que no usa COM), o necesita soporte multiplataforma, entonces ODBC es la mejor opción.

0

Si está programando en C#, no usará directamente ninguno. Utilizará ADO.NET de alguna forma.

Es cierto que el proveedor que especifique en su cadena de conexión puede resultar ser un proveedor ODBC o un proveedor OleDB, pero esto no afectará a su código. ADO.NET tendrá ambas API desde su punto de vista.

+0

¿Alguno de los downvotes se preocuparía por explicar el motivo del vencimiento? –

+1

No he votado negativamente, pero no creo que hayas respondido la pregunta. Hay muchos idiotas por ahí; he encontrado que lo mejor es ignorarlos. –

+0

Entonces no entiendo la pregunta. Él no está tratando de decidir qué API usar, ¿verdad? Pensé que estaba tratando de decidir qué controladores usar para la mayor flexibilidad. No obtuve nada de la pregunta que sugiere que el OP está por comenzar a llamar a la API OLEDB COM. –

2

Como desarrollador de C# y porque está accediendo a muchos orígenes de datos diferentes, debe ir con OLEDB. He copiado el siguiente de esta white paper porque da algunas pistas lo que debe usar cuando:

OLE DB no es un reemplazo para ODBC

La tecnología ODBC y de mercado de otros fabricantes han madurado hasta un punto en el que ODBC es una tecnología ideal para acceder a bases de datos SQL. Como resultado, una parte integral de OLE DB es un nuevo administrador de controladores OLE DB que permite a los clientes de OLE DB hablar con los proveedores de ODBC. La siguiente información puede guiar su elección de qué tecnología usar:

  • Si está accediendo a bases de datos relacionales estándar desde un entorno no OLE, ODBC es la mejor opción.
  • Si desea exponer una interfaz de datos a datos que no son SQL, OLE DB es la mejor opción.
  • Si está programando en un entorno OLE, OLE DB es la mejor opción.
  • Si desea construir componentes de bases de datos interoperables, OLE DB es la única opción.
+0

Creo que es importante señalar que la segunda viñeta solo se aplica a los proveedores de un controlador OLEDB (o a algunos clientes muy especializados): la mayoría del software del cliente nunca expone dicha interfaz. Y la cuarta bala es simplemente hablar de marketing. –

+0

@McSim: Ninguno de estos puntos se aplica a la pregunta. La pregunta era sobre usar estas bases de datos de C#. El OP no invocará una API basada en ODBC C, ni una API basada en COM de OLE DB. Dices que fuiste con OLEDB. ¿Estás llamando a la API COM? –

Cuestiones relacionadas