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!
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.
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
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);
fabim
Fevereiro 28, 2007, 3:22pm
#11
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
[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 [/quote]
Estava com este mesmo problema quando utilizei a opção rs.getInt(“max(codigo)”) deu certo…
Obrigado…