O que é o ODBC?

Há muitos conceitos errados sobre ODBC no mundo da computação. Para o usuário final, é um ícone no Painel de Controle do Microsoft Windows. Para o programador de aplicativos, é uma biblioteca contendo rotinas de acesso a dados. Para muitos outros, é a resposta a todos os problemas de acesso a bancos de dados já imaginados.

Em primeiro lugar, ODBC é uma especificação para uma API de banco de dados. Essa API é independente de qualquer DBMS ou sistema operacional; embora este manual use C, a API ODBC é independente de linguagem. A API ODBC se baseia nas especificações CLI do Open Group e ISO/IEC. O ODBC 3.x implementa totalmente essas duas especificações (versões anteriores do ODBC se baseavam em versões preliminares dessas especificações, mas não as implementavam totalmente), e adiciona recursos comumente necessários aos desenvolvedores de aplicativos de banco de dados com base em tela, como cursores roláveis.

As funções na API ODBC são implementadas por desenvolvedores de drivers específicos de DBMS. Os aplicativos chamam as funções nesses drivers para acessar dados de maneira independente do DBMS. Um Gerenciador de Driver gerencia a comunicação entre aplicativos e drivers.

Embora a Microsoft forneça um gerenciador de driver para computadores que executam o Microsoft Windows 95 e posterior, tenha escrito vários drivers ODBC e chame funções ODBC de alguns dos aplicativos, qualquer pessoa pode escrever aplicativos e drivers ODBC. Na verdade, a grande maioria dos aplicativos e drivers ODBC disponíveis no momento são escritos por outras empresas que não a Microsoft. Além disso, há drivers e aplicativos ODBC no macOS e em diversas plataformas UNIX.

Para ajudar os desenvolvedores de aplicativos e drivers, a Microsoft oferece um SDK (Software Development Kit) ODBC para computadores que executam o Windows 95 e versões posteriores que fornece o gerenciador de driver, a DLL do instalador, as ferramentas de teste e os aplicativos de exemplo. A Microsoft se uniu à Visigenic Software para portar esses SDKs para o Macintosh e uma variedade de plataformas UNIX.

É importante compreender que o ODBC foi projetado para expor os recursos do banco de dados, não para complementá-los. Assim, os criadores de aplicativos não devem esperar que o uso do ODBC transforme repentinamente um banco de dados simples em um mecanismo de banco de dados relacional completo. Também não se espera que os criadores de drivers implementem funcionalidades não encontradas no banco de dados subjacente. Uma exceção a isso é que os desenvolvedores que escrevem drivers que acessam diretamente os dados do arquivo (como dados em um arquivo Xbase) precisam escrever um mecanismo de banco de dados que dê suporte pelo menos à funcionalidade SQL mínima. Outra exceção é que o componente ODBC do SDK do Windows, anteriormente incluído no SDK do MDAC (Microsoft Data Access Components), fornece uma biblioteca de cursores que simula cursores roláveis para drivers que implementam determinado nível de funcionalidade.

Os aplicativos que usam ODBC são responsáveis por qualquer funcionalidade entre bancos de dados. Por exemplo, ODBC não é um mecanismo de junção heterogêneo nem um processador de transações distribuídas. No entanto, por ser independente do DBMS, pode ser usado para criar essas ferramentas entre bancos de dados.