Olá pessoal,
Estou fazendo algumas aplicações de teste e aprendizado.
Pois bem, fazendo um teste com o Microsoft Access 2003 estou passando por problemas.
Estou querendo pegar o ID máximo de meus contatos, e escrevi a seguinte linha de comando.
String sql = "SELECT MAX(c.ID) FROM CONTATOS c";
e estou querendo buscar essa informação de minha query. Então seguem as linhas abaixo:
ResultSet rs = stmt.executeQuery();
return rs.getLong("ID");
mas, está havendo um “SQLException: Coluna não encontrada”. O nome da coluna está correto. Não sei o que mais pode ser.
Alguém tem alguma sugestão?
Alternativas de correção
a)
return rs.getLong("MAX(c.ID)");
b)
String sql = "SELECT MAX(c.ID) AS MAXID FROM CONTATOS c";
...
return rs.getLong("MAXID");
Dica: Access não é banco de dados. Se puder, não use. (já rolaram cabeças aqui na empresa porque alguém achou que Access suportava acesso multi-usuário, o que ele nunca fez direito - isso faz 12 anos atrás, mas a Microsoft nunca vai consertar isso.)
Obrigado pela ajuda Thingol.
Estou utilizando Access por que é o único que posso utilizar para testes aqui na empresa. Terrível isso… mas de boa! vlw!
Pô Thingol, o Access realmente marcou uma época negra aí hein?
Será que não foi falta de conhecimento do banco e construíram um elefante branco que o próprio Access não suportou?
Eu já trabalhei com Access e foi coincidentemente há 12 anos atrás também e era multiusuário e nada demais aconteceu.
Era um .mdb num drive da rede e os .mdb locais que alimentavam a base, coisa simples.
O que acho ruim do Access:
- Você não pode usá-lo remotamente de maneira simples (qualquer outro banco acessível via JDBC costuma sê-lo). Ou seja, se o seu sistema é em Java e tem de rodar em Linux, já não pode usar o Access sem ter de fazer muita ginástica ou pagar alguma coisa.
- Para funcionar direitinho multi-usuário é preciso fazer certas coisas que os programadores normalmente não conseguem fazer sozinhos - ou seja, você acaba tendo de revisar muita coisa (limpar muita sujeira, falando mais francamente);
- Ele estimula o uso de tipos de campos (como OLE) que não existem em outros bancos de dados, amarrando seu sistema eternamente ao Access.
- Como é “de graça” (ou seja, vem com o MS Office), parece que é de graça (pelo menos pro seu chefe). E como é fácil de usar com outras linguagens (como VB e Delphi) normalmente ele acaba sendo a solução imposta.
A sim, seus exemplos são bem mais complexos do que um simples sistema base (Access) front-end (Access).
Eu não passei por isso, então não tive maiores problemas. Olhando por esse seus comentários realmente a coisa complica.
Só por curiosidade, um dos sistemas que desenvolvi em Access eu utilizava tabelas Oracle anexadas, via ODBC. Rodei uma consulta exclusão sobre uma dessas tabelas Oracle e adivinha o que o Access fez? Ele dropou a tabela, literalmente. Foi a primeira vez que tive que recorrer ao backup das fitas DAT na época, fora a mijada que veio à galope.