Bem, primeiro, JDBC e ODBC não são compatíveis. O JDBC foi a resposta do Java ao ODBC, e eles preenchem o mesmo nicho, mas você não pode se conectar a uma fonte de dados ODBC usando o JDBC e vice-versa. Agora há uma ponte jdbc-odbc em Java, mas isso é um hack de compatibilidade, não um conector nativo (a tradução será JDBC- > ODBC- > (Banco de Dados de Destino) em vez de JDBC- >
O ODBC é simplesmente uma interface padronizada para acessar dados de diferentes bancos de dados. Você instala o driver ODBC to (qualquer banco de dados) em sua máquina, cria uma origem de dados ODBC e pode se conectar a essa origem de dados via odbc em vez de configurar um driver nativo para o banco de dados original. Ou, se o banco de dados for compatível com ODBC, você poderá se conectar diretamente a ele importando o driver.
O benefício é que você pode escrever todo o seu código para ser compatível com o odbc e ele funcionará apenas com pequenas modificações, independentemente do tipo real do banco de dados.
O negativo é um impacto no desempenho e um comportamento estranho ocasional, uma vez que o odbc não consegue traduzir alguma ação específica do banco de dados exatamente da maneira correta. Suporte varia. Se você estiver usando o ODBC para se conectar a algum banco de dados legado, você pode ter muito trabalho a fazer, mas se você estiver usando-o para se conectar a um banco de dados de acesso, ele funcionará perfeitamente.
O processo que acontece na conexão é relativamente simples. Você envia sua consulta "padronizada", o driver JDBC ou ODBC traduz na estrutura nativa que você está tentando acessar e, em seguida, envia a consulta. Se o banco de dados retornar alguma coisa, o processo será revertido.
Se você tiver problemas, verifique o driver que está usando. Se você importar um driver ruim com java, nada funcionará corretamente. A primeira coisa que você precisa fazer é registrar o erro. Se você estiver usando uma fonte de dados ODBC, basta ativar o logon nas propriedades (consulte a documentação do driver para descobrir as configurações corretas; elas variam).
Se você estiver usando o JDBC, provavelmente terá que capturar e registrar o SQLException por conta própria.