Acessar banco access: problema, senha inválida

Olá,

a vida é dura e injusta, o que talvez justifique a minha atual necessidade de acessar uma série de banco de dados no formato Access usando JDBC.

Acessar o banco de dados é fácil, faço isto sem problemas, tal como exposto no código abaixo, que todos que trabalham com JDBC + Access já devem conhecer:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Carregando o driver
String db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
String nomeArquivo = getNomeArquivo();
db += nomeArquivo + ";DriverID=22;READONLY=false)";
String senha = getSenha();
Connection = DriverManager.getConnection(db, "admin", senha);

Já tentei mudar o nome do usuário no acesso de inúmeras maneiras ("", “administrator”, “chacrinha”, etc.), o que é inútil, uma vez que bancos Access não possuem gerenciamento de usuários.

Como resultado, recebo uma famigerada SQLException me dizendo que a senha é inválida. No entanto, a senha usada é realmente a do banco de dados em questão!
Pergunto portanto: alguém aqui já passou por problema semelhante?

A senha tem acentos? Se tiver, aconselho a mudar a senha do arquivo dentro do Access, salvá-lo, e a seguir tentar abrir novamente. É apenas um chute.

Tentou

Usuario=""
Senha=""

?

Boa sorte!

OPA!

A solução era simples: seguinte, descobri que passar usuário e login para o Access via JDBC, pela chamada

DriverManager.getConnection(connectionString, login, senha);

não funciona bem com o Access.

Sendo assim, modifiquei a string de conexão e o bicho funcionou.

Algo como

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=caminho pro arquivo;Uid=Admin;Pwd=senha;

Estranho não? Mas por incrível que pareça, funcionou.

Fica aí a solução para aqueles que forem passar pelo mesmo problema. [:)]