Olá amigos, estou com um problema nesse método cuja função é pegar o maior valor contido em uma tabela de nome codigo.. A tabela está com auto-numeração.. Alguém pode me dar uma força ? Ele sempre retorna o valor "-1", valor iniciar de "max"... Abraço pra voces
publicintgetMaxNumero(){
Stringclausula="select max (codigo) from oficina";intmax=-1;try{
pstmt=con.prepareStatement(clausula);rs=pstmt.executeQuery();if(rs.next()){
max=rs.getInt("codigo");}
pstmt.close();con.close();}catch(SQLExceptionerr){
err.getMessage();}
returnmax;}
Nao esta funcionando da maneira esperada pq o codigo esta dando erro ao rodar e vc esta otimindo a mensagem de erro. Ao inves de fazer
}catch(SQLExceptionerr){err.getMessage();}
faca
}catch(SQLExceptionerr){err.printStackTrace();}
e ai vc vai ver que a msg de erro acusa que o campo “codigo” nao existe, ja que voce fez “max(codigo)” ao inves de “max(codigo) AS codigo”.
Caso nao queira especificar o alias, um rs.getInt(1) resolve.
Mas mesmo assim, NUNCA omita mensagens de erro.
Rafael
Fabricio_Cozer_Marti
Exato.
O correto seria que fosse relancada a excecao ou registrasse num arquivo de log.
o que foi feito se chama de abafamento de excecoes, e é considerado
uma penalidade grave. rsrsrs…
ThomasCouto
Engraçado agora tá assim: [Microsoft][Driver ODBC para Microsoft Access] Referência circular causada pelo alias ‘codigo’ na lista SELECT da definição da consulta.
Fabricio_Cozer_Marti
será que ele confundiu o alias com o nome da coluna ?
tente essa query.
selectmax(codigo)ascodfromoficina
ThomasCouto
An unexpected error has been detected by HotSpot Virtual Machine:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c901010, pid=3148, tid=1792
Java VM: Java HotSpot™ Client VM (1.5.0_02-b09 mixed mode, sharing)
Problematic frame:
C [ntdll.dll+0x1010]
An error report file with more information is saved as hs_err_pid3148.log
If you would like to submit a bug report, please visit: