Como sempre, o Access apronta das suas comigo. Quando achava que já tinha resolvido todos os problemas relacionados ao maldito problema “Não é possível abrir mais tabelas” (veja este link), encontrei outra possível causa para o mesmo no StackOverflow.
O que pode ocorrer é o seguinte: há situações nas quais o seu cliente pode perder conexões com a rede. Quando a conexão é fechada, não necessáriamente é liberado o socket de conexão com os arquivos de conexão com o Access até que seja executado o coletor de lixo do Java.
Ou seja: você fecha a sua conexão, assim como todas as suas instâncias de PreparedStatements e ResultSets, define-as como null mas o driver ainda não as fechou porque perdeu conexão com a rede momentaneamente.
Como picos de rede são comuns em ambientes mais complexos (e não tão complexos assim), a solução é a seguinte: ao trabalhar com Access e Java, execute o garbage colector de tempos em tempos para garantir que as conexões fechadas e nulificadas sejam de fato fechadas no driver ODBC.
A minha pergunta relacionada no StackOverflow pode ser vista aqui com ainda mais detalhes.
Mais um motivo para nunta ter aceito trabalhar com projetos utilizando Access.
Te invejo. Lido com Access diáriamente…
Que azar, hein.
Pelo menos tenho sorte nisso, na empresa que trabalho atualmente é só mysql na cabeça (uma maravilha de DB para web) e a próxima empresa que vou trabalhar só é apenas Postgres.
Mas é estranho trabalhar com Access no JDBC, o ideal (que nunca acontece) seria trabalhar usando o próprio .net que tem melhor integração, pois parece que ultimamente a Microsoft tem pegado bastante no pé da tecnologia Java e tornando a integração de seus produtos com a mesma tecnologia cada vez pior.
Pois então pasme: eu lido com Access 97 (doeu só de ouvir né?) :)
0_0
Realmente doeu nos olhos e no ouvido, meus parabens você é um super herói, o Access 97 é de fato assustador, mas até compreendo por causa da época.