- ODBC es una API estándar que permite a aplicaciones muy distintas acceder a múltiples bases de datos usando SQL sin depender de un proveedor concreto.
- La arquitectura ODBC se basa en una capa intermedia con administrador de controladores, drivers específicos y orígenes de datos configurables mediante DSN o cadenas de conexión.
- Herramientas como Access, Qlik Sense o Tableau aprovechan ODBC para conectar con numerosos SGBD, gestionando capacidades, rendimiento y seguridad según el driver.
- ODBC convive con otros estándares como JDBC en Java, manteniéndose como referencia de facto para el acceso a fuentes SQL en aplicaciones nativas y entornos corporativos.

Si trabajas con datos en el día a día, tarde o temprano aparece el dichoso acrónimo ODBC y más de uno se pregunta para qué sirve exactamente. ODBC es uno de esos estándares silenciosos que hacen posible que aplicaciones y bases de datos muy distintas se entiendan entre sí, sin que tengas que reescribir todo tu código cada vez que cambias de proveedor.
Aunque hoy en día existan tecnologías más nuevas, ODBC sigue siendo clave en un montón de entornos: desde herramientas de ofimática como Excel o Access, pasando por soluciones de BI como Tableau o Qlik Sense, hasta aplicaciones corporativas heredadas que aún mueven datos críticos. Vamos a ver con calma qué es, para qué se usa, cómo funciona por dentro y cómo se configura en la práctica.
Qué es ODBC y para qué sirve realmente
ODBC son las siglas de Open Database Connectivity o conectividad abierta de bases de datos. Se trata de una interfaz de programación de aplicaciones (API) de estándar abierto diseñada para acceder a bases de datos de forma uniforme, independientemente del sistema de gestión de bases de datos (DBMS) que haya detrás.
La idea es sencilla pero potentísima: escribes tu aplicación una sola vez, usando llamadas ODBC y sentencias SQL estándar, y dejas que un controlador se encargue de hablar “el idioma nativo” de cada base de datos. Eso te permite cambiar de Access a SQL Server, de MySQL a Oracle o incluso a un simple archivo de texto, sin tener que reescribir toda la lógica de acceso a datos.
ODBC actúa como un puente entre la aplicación cliente y el DBMS. La aplicación lanza peticiones SQL usando la API ODBC, el controlador traduce esas peticiones al formato que entiende el SGBD concreto y devuelve los resultados de vuelta a la aplicación. Gracias a esto, el programa no necesita conocer las particularidades propietarias de cada base de datos.
Este estándar nació a principios de los 90 de la mano del SQL Access Group y Microsoft fue el principal impulsor en el mundo Windows, con el primer controlador SIMBA.DLL (desarrollado junto a Simba en 1992). Hoy existen implementaciones en Windows, UNIX, Linux, OS/2 y macOS, lo que convierte a ODBC en una solución multiplataforma muy extendida.
Historia y evolución de ODBC
La historia de ODBC está muy ligada a la evolución del acceso a datos en entornos Microsoft y a los estándares abiertos. ODBC se apoya en la especificación SQL Call-Level Interface (CLI) de The Open Group e ISO/IEC, que definía cómo debían ser las APIs de acceso a bases de datos a nivel de llamada.
La primera versión de ODBC se lanzó en septiembre de 1992 (ODBC 1.0). A partir de ahí se fueron sucediendo versiones con nuevas capacidades y mejoras de rendimiento: ODBC 2.0 (sobre 1994), 2.5, ODBC 3.0 (aprox. 1995, con aportaciones clave de IBM e Intersolv), ODBC 3.5 (1997) y ODBC 3.8 alrededor de 2009, que se integró con Windows 7.
En paralelo, Microsoft intentó ir más allá de ODBC creando otros modelos de acceso a datos: OLE DB, ADO, DAO, RDS, el motor Jet y posteriormente ADO.NET. El plan inicial era que tecnologías como OLE DB y ADO sustituyeran a ODBC como estándar principal de acceso a datos, sobre todo en escenarios más orientados a objetos y con fuentes de datos no necesariamente SQL.
Sin embargo, la realidad del mercado fue otra: ODBC mantuvo su posición como estándar de facto para acceder a fuentes SQL. El soporte masivo de proveedores como Oracle e IBM, su carácter multiplataforma y el enorme parque de aplicaciones existentes hicieron que siguiera siendo la opción preferida en muchos proyectos.
Hoy en día, si hablamos de acceso a bases de datos SQL, los dos grandes estándares que siguen plenamente vigentes son ODBC y JDBC. Otros modelos como OLE DB o algunas capas de ADO han perdido mucha relevancia y en muchos casos están siendo abandonados o quedando solo para compatibilidad con aplicaciones antiguas.
Arquitectura de ODBC: cómo funciona por dentro
Para entender bien para qué sirve ODBC, conviene ver su arquitectura. ODBC plantea una capa intermedia entre la aplicación y el DBMS de forma que la app no hable directamente con la base de datos, sino con una API estándar.
En líneas generales, el flujo es este: la aplicación envía peticiones SQL al Administrador de controladores ODBC, este localiza y carga el controlador adecuado para la base de datos de destino, el controlador traduce la petición al protocolo nativo del SGBD, la base de datos procesa la consulta y los resultados vuelven por el mismo camino de vuelta hasta la aplicación.
Esta arquitectura permite no solo independencia del proveedor, sino también resolver temas como compatibilidad de versiones, gestión de errores, conversión de tipos de datos y diferencias de sintaxis SQL entre motores. Todo se hace lo más transparente posible para quien programa la aplicación.
En el contexto de Windows, ODBC forma parte de la Windows Open Services Architecture (WOSA), una arquitectura de servicios abiertos en la que las aplicaciones de escritorio pueden conectarse a distintos entornos de cómputo sin reescribirse para cada plataforma.
Componentes principales de ODBC
La implementación típica de ODBC en sistemas Microsoft y en muchas plataformas sigue una estructura común. Podemos distinguir varios componentes clave que colaboran para proporcionar esa conectividad abierta.
Por un lado está la API de ODBC, un conjunto de funciones de llamada, códigos de error y convenciones SQL estándar que la aplicación utiliza para trabajar con datos. Esta API define cómo se abren conexiones, cómo se envían consultas, cómo se recuperan resultados o se gestionan transacciones, sin depender del SGBD concreto.
Otro elemento esencial es el Administrador de controladores ODBC (en Windows, la biblioteca Odbc32.dll). Esta biblioteca de enlaces dinámicos se sitúa entre la aplicación y los controladores concretos, se carga de forma transparente y se encarga de localizar, cargar y descargar los drivers adecuados, así como de gestionar versiones y compatibilidades.
Luego encontramos los controladores de bases de datos ODBC. Cada DBMS (SQL Server, Oracle, MySQL, DB2, etc.) dispone de su propio driver, normalmente en forma de una o varias DLL. Estos controladores son los que realmente traducen las llamadas de la API ODBC a llamadas nativas del SGBD, manejan la sintaxis SQL específica, los tipos de datos internos y las particularidades de cada motor.
En algunos entornos también se utiliza una biblioteca de cursores ODBC (por ejemplo, Odbccr32.dll en Windows), que se coloca entre el Administrador de controladores y los propios drivers para gestionar el desplazamiento por los conjuntos de resultados, cursores avanzados y otras operaciones de navegación por los datos.
Finalmente, tenemos el Administrador de orígenes de datos ODBC, una herramienta gráfica o de configuración que permite definir y modificar las fuentes de datos (DSN) del sistema. Desde ahí se decide qué driver se usará, contra qué servidor o archivo se conectará y con qué parámetros de autenticación.
Aplicaciones habilitadas para ODBC y tipos de fuentes de datos
Cualquier software que pueda abrir una conexión usando la API estándar puede considerarse una aplicación habilitada para ODBC. En el mundo real esto incluye desde programas ofimáticos hasta herramientas de análisis y aplicaciones empresariales a medida.
Algunos ejemplos típicos son Microsoft Excel, Microsoft Access, Power BI, Tableau, Crystal Reports, Qlik Sense y multitud de aplicaciones de gestión (ERP, CRM, soluciones verticales, etc.) que necesitan leer o escribir datos en diferentes sistemas.
Para que la aplicación conozca cómo llegar a los datos se utilizan las fuentes de datos ODBC, que combinan el origen de los datos con la información de conexión necesaria: ubicación del servidor, nombre de la base de datos, usuario, contraseña y opciones específicas del driver. Esta configuración suele encapsularse en un DSN (Data Source Name) o en una cadena de conexión.
En Windows, los orígenes de datos ODBC se gestionan mediante el Administrador de orígenes de datos ODBC. Allí se pueden configurar distintos tipos de DSN, cada uno con su ámbito y modo de almacenamiento, lo que ofrece bastante flexibilidad a la hora de desplegar aplicaciones en equipos individuales o en servidores compartidos.
Un detalle importante es que las clases y bibliotecas de acceso a datos pueden trabajar con cualquier origen que tenga un controlador ODBC disponible. Esto incluye bases de datos relacionales, motores ISAM, hojas de cálculo de Excel, archivos de texto o incluso fuentes de datos en vivo que expongan sus datos en formato tabular accesible vía SQL.
Tipos de DSN y cadenas de conexión en ODBC
Cuando hablamos de configurar ODBC, casi siempre aparece el concepto DSN. Un DSN (Data Source Name) agrupa todos los datos necesarios para abrir la conexión: qué driver se va a usar, a qué servidor apunta, qué base de datos concreta, credenciales y opciones adicionales.
En sistemas Windows se distinguen tres tipos de DSN. Los DSN de usuario almacenan la configuración en el Registro solo para el perfil de usuario actual, de forma que únicamente esa cuenta puede utilizarlos. Son útiles cuando se quiere aislar conexiones por usuario y evitar que otros vean la configuración.
Los DSN de sistema se almacenan también en el Registro, pero son visibles para todos los usuarios del equipo, incluyendo servicios del sistema. Son la opción recomendada cuando se trata de servidores o instalaciones compartidas, ya que permiten que distintas cuentas utilicen la misma configuración de conexión sin duplicarla.
Por otro lado, existen los DSN de archivo, que guardan la información de conexión en un archivo de texto con extensión .dsn en lugar de en el Registro. Estos DSN suelen ser más flexibles, ya que se pueden copiar a otros equipos que tengan el mismo driver instalado, o colocarse en un servidor compartido para centralizar la configuración.
Además de los DSN compartibles, hay DSN de archivo no compartibles que residen en un único equipo y actúan como puntero a un DSN de máquina. Esto permite aprovechar orígenes de datos existentes sin exponer toda la configuración de forma abierta.
En muchos lenguajes (por ejemplo, Visual Basic o C#) también se puede optar por no definir un DSN y pasar una cadena de conexión directa al Administrador de controladores ODBC. Esta cadena incluye los mismos parámetros que un DSN pero embebidos en el código, lo que simplifica la distribución de la aplicación a costa de perder algo de flexibilidad administrativa.
Configuración práctica de ODBC en Windows
El proceso típico para empezar a usar ODBC en Windows sigue unos pasos claros. En primer lugar, hay que instalar el controlador ODBC adecuado para el DBMS de destino. A veces viene ya con el propio Windows (por ejemplo, drivers genéricos para SQL Server o Access) y otras veces lo proporciona el fabricante de la base de datos o un tercero especializado.
Una vez instalado el driver, se abre la herramienta “Orígenes de datos (ODBC)” desde Panel de control → Herramientas administrativas. Esta utilidad abre el Administrador de orígenes de datos ODBC, donde se puede elegir si se quiere crear un DSN de usuario, de sistema o de archivo, según las necesidades de seguridad y compartición.
El siguiente paso es pulsar en “Agregar”, seleccionar el controlador correspondiente (por ejemplo, “SQL Server”, “Driver de Microsoft Access (*.mdb, *.accdb)”, etc.) y seguir el asistente: se suelen pedir el nombre descriptivo del origen, el servidor o archivo al que apunta, y en muchos casos credenciales o modo de autenticación.
En entornos de 64 bits hay que prestar atención a la arquitectura: una instalación de Windows de 64 bits incluye dos versiones del Administrador ODBC (Odbcad32.exe): la de 64 bits en %systemdrive%\Windows\System32 y la de 32 bits en %systemdrive%\Windows\SysWOW64. Un driver de 32 bits solo aparece en el administrador de 32 bits, y lo mismo con los de 64 bits.
Aplicaciones como Access, Qlik Sense o Tableau conectarse a las bases de datos externas. Algunas, además, ofrecen conectores propios que encapsulan drivers ODBC licenciados (por ejemplo, el ODBC Connector Package de Qlik) de forma que el usuario no tenga ni que pasar por el Administrador de orígenes de datos de Windows.
Uso de ODBC con herramientas como Access, Qlik Sense o Tableau
En Microsoft Access, ODBC se utiliza para enlazar o importar datos desde orígenes externos para los que Access no tiene un controlador nativo integrado, como SQL Server, Oracle o bases de datos de terceros. El esquema es el habitual: Access se conecta al Administrador de controladores ODBC, este utiliza el driver específico (por ejemplo, el de SQL Server) y se abre la conexión a la base.
Con Qlik Sense tenemos dos opciones. Por un lado, usar conectores incluidos en el Qlik ODBC Connector Package, que exponen drivers “Qlik-xxx” optimizados y que se configuran directamente desde la interfaz de Qlik, sin pasar por el administrador ODBC de Windows. Por otro, instalar manualmente un driver ODBC para el DBMS y crear un DSN de usuario o de sistema que Qlik Sense consumirá al crear la conexión de datos.
En Qlik Sense Desktop, la lista de DSN puede mostrar tanto los DSN creados en Windows como los drivers internos del package (identificados con el prefijo “Qlik-”). Estos drivers internos no se pueden usar para crear conexiones ODBC genéricas fuera del ecosistema Qlik; están pensados exclusivamente para los conectores de base de datos que trae el propio producto.
En el caso de Tableau, existe una colección de conectores nativos muy afinados para bases de datos concretas (Snowflake, SQL Server, Oracle, etc.), pero también se ofrece un conector ODBC genérico para cuando se quiere acceder a una base para la que no hay conector específico. Este conector aprovecha el estándar ODBC para hablar con prácticamente cualquier fuente que implemente SQL y la API ODBC.
Tableau, al conectarse vía ODBC, realiza una fase de descubrimiento en la que interroga al controlador ODBC para averiguar qué capacidades soporta: funciones escalares y de agregación, manejo de fechas, posibilidad de subconsultas, tipos de JOIN disponibles, creación de tablas temporales, etc. En función de lo que el driver declare, clasifica la conexión como totalmente funcional, con limitaciones menores, con limitaciones importantes o directamente inusable.
Relación entre ODBC y JDBC

Dentro del ecosistema de acceso a datos, ODBC tiene su equivalente natural en el mundo Java: JDBC (Java Database Connectivity). Ambos buscan el mismo objetivo: proporcionar un estándar para que las aplicaciones se conecten a diferentes bases de datos usando SQL, pero con enfoques adaptados a su entorno.
Mientras que ODBC está pensado principalmente para aplicaciones escritas en C, C++ u otros lenguajes que soportan su API y se usa mucho en Windows (aunque también en otras plataformas), JDBC forma parte del propio ecosistema Java y es multiplataforma por definición, al correr sobre la máquina virtual.
La arquitectura de JDBC se divide en una capa API, que son las interfaces y clases Java que usan los desarrolladores, y una capa de driver que implementa esas interfaces y se comunica con la base de datos real. Existen cuatro tipos de controladores JDBC: el Tipo 1 (puente ODBC), Tipo 2 (nativo/API parcial), Tipo 3 (protocolo de red) y Tipo 4 (controlador “delgado” 100% Java).
El antiguo controlador JDBC-ODBC bridge (Tipo 1) permitía a aplicaciones Java llegar a bases accesibles vía ODBC. Era útil como solución de transición, pero con el tiempo se fue desaconsejando por rendimiento y complejidad, y ha terminado desapareciendo de las versiones modernas de Java.
En JDBC, la conexión a una base se construye a partir de una URL con formato tipo jdbc::/// más propiedades opcionales. Por ejemplo: jdbc:mysql://localhost:3306/midatabase. A partir de esta URL, el DriverManager de Java localiza el driver adecuado y abre la conexión, de forma similar a cómo el Administrador ODBC selecciona el driver en el mundo ODBC.
En cuanto a diferencias prácticas, ODBC y JDBC se distinguen sobre todo por el lenguaje y el ecosistema al que se dirigen. ODBC se integra profundamente con Windows y con aplicaciones nativas, mientras que JDBC se integra de forma natural con el mundo Java, soporta tipos de datos específicos de Java y proporciona utilidades propias como ResultSet para manejar los resultados. En determinados escenarios, un driver JDBC Tipo 4 puede ofrecer un rendimiento muy competitivo al eliminar capas intermedias.
Al final, la elección entre uno y otro viene marcada por la tecnología de la aplicación: aplicaciones Java tienden a usar JDBC; aplicaciones nativas, ODBC. En cualquier caso, ambos representan la misma filosofía de acceso estandarizado y agnóstico respecto al proveedor de base de datos.
ODBC sigue siendo una pieza clave en el rompecabezas del acceso a datos: permite que programas de todo tipo se conecten a bases de datos muy distintas mediante una API común, oculta las diferencias de cada motor gracias a sus controladores, encaja con herramientas tan diversas como Access, Qlik Sense o Tableau y convive con otros estándares como JDBC en el mundo Java, de modo que, si entiendes bien cómo funciona ODBC, tienes medio camino hecho para moverte con soltura por casi cualquier entorno de bases de datos moderno.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.


