MYSQL - Função MAX não funciona no JAVA?

no cliente, eu digito:
select MAX(codigo) from USUARIO;
ele funciona beleza…
mas quando executo esta query no JAVA, ele retorna a seguinte exception:

java.sql.SQLException: Column ‘codigo’ not found.

Código:

String start_rs = "SELECT max(codigo) from "+tabela; try { rs2 = stt.executeQuery(start_rs); } catch (SQLException ex) { ex.printStackTrace(); }

Existe alguma outra forma (Caso ñ se resolva esta) de retornar o maior elemento da tabela?

Obrigado! :smiley:

fiz um código aqui, que funciona mas na GAMBI mesmo…

private int ultimoCad() throws SQLException { Statement stt = null; ResultSet rs2 = null; try { stt = bd.conecta_bd(banco).createStatement(); } catch (SQLException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } String start_rs = "SELECT * from "+tabela; try { rs2 = stt.executeQuery(start_rs); } catch (SQLException ex) { ex.printStackTrace(); } if (rs2.last()) return rs2.getInt("CODIGO")+1; return 1; }

Tenta assim:

 SELECT MAX(U.CODIGO) FROM USUARIO U WHERE 1=1 

Espero que dê certo. :stuck_out_tongue:

detalhe…uam vez precisei usar o max e ele não funcionava simplesmente pq o parenteses estava junto ao max (ou vice versa, não lembro)

tenta usar o mesmo comando com o parenteses separado, exemplo:

errado: SELECT max(codigo) from "+tabela

certo: SELECT max (codigo) from "+tabela

é uma dica, valuews…
[/]'s

muito obrigado pela atenção,
mas infelizmente ñ deu!

:roll:

[quote=peerless]muito obrigado pela atenção,
mas infelizmente ñ deu!

:roll: [/quote]

acabei de fazer um teste aqui (devia ter feito antes né…rss)

na verdado o correto é vc escrever max(codigo) juntinho mesmo…faz o seguinte cara usa uma ferramenta de query para MySQL e veja se o código funciona…se funciona lá funciona no java…não existe código sql que não rode através do java…

[/]'s

Ah… lembrei o que ocorre.

  SELECT MAX(U.CODIGO) AS MAXIMO FROM USUARIO U WHERE 1=1 

Aí você recupera :

rs.getInt("MAXIMO")

Senão você teria que recuperar como:

rs.getInt("MAX(CODIGO)")

Frescuras de SQL.

Até!

[quote]mysql> select max(codigo) from USUARIO;
±------------+
| max(codigo) |
±------------+
| 4 |
±------------+
1 row in set (0.00 sec)[/quote]

private int ultimoCad() throws SQLException { Statement stt = null; ResultSet rs2 = null; try { stt = bd.conecta_bd(banco).createStatement(); } catch (SQLException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } String start_rs = "select max(CODIGO) from USUARIO";// * from "+tabela; try { rs2 = stt.executeQuery(start_rs); } catch (SQLException ex) { ex.printStackTrace(); } if (rs2.next()) return rs2.getInt("CODIGO")+1; return 1; }


[quote]java.sql.SQLException: Column ‘CODIGO’ not found.
at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:983)
[/quote]

Tá foda :frowning:

Bah, FUNCIONOU!

ahuuah, que onda meu!

valeu, VOCÊS SÃO FODA!

abraços, t+

Tenta assim.

String table = "TEL_LIGNES"; PreparedStatement ps = conn.prepareStatement("SELECT MAX(COMPTEUR) AS max FROM "+table); ResultSet rs = ps.executeQuery(); int max = 0; if(rs.next()){ max = rs.getInt("max") + 1; } System.out.println("Max = "+max);

se vc reparou, qdo vc executou a query no cmd do sql ele te retornou uma coluna com nome “max(codigo)”, e nao codigo…

pra isso vc usa um “AS”, pra da um apelido pra coluna no seu resultSet…

se vc tivesse feito rs.getInt(“max(codigo)”) era bem provavel q funcionasse :wink:

[quote=fabim]se vc reparou, qdo vc executou a query no cmd do sql ele te retornou uma coluna com nome “max(codigo)”, e nao codigo…

pra isso vc usa um “AS”, pra da um apelido pra coluna no seu resultSet…

se vc tivesse feito rs.getInt(“max(codigo)”) era bem provavel q funcionasse :wink:[/quote]

Estava com este mesmo problema quando utilizei a opção rs.getInt(“max(codigo)”) deu certo…

Obrigado…