Função Max do Mysql

6 respostas
G

Eu to tentando chamar o ultimo registro inserido no mysql, e quero passar ele para um JtextField, eu fiz isso atravez de um evento de um botão, eu clico no botão e pego o ultimo registro no banco, so q da erro sempre q eu tento, to fazer do assim:

if(conecta() == 1 ) { String sql; try{ sql ="SELECT Max(numero) FROM prontuario.tbprontuario;"; ResultSet rs = canal.executeQuery(sql); if (rs.next()) rs.getInt("numero"); n_prontuario.setText(rs+""); } catch (SQLException ex) { ex.printStackTrace(); }

so q da esse seguinte erro:

java.sql.SQLException: Column 'numero' not found. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:987) at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2749)

No mysql o banco chama “prontuario” a tabela “tbprontuario” e a coluna “numero”, alguem pode me dar uma ajuda ou mostrar algum outro meio de pegar o ultimo registro inserido no banco e passar ele para um JtextField

6 Respostas

M

Porque o nome da coluna não é “numero” e sim “max(numero)”. Estranho não? Você pode contornar isso fazendo:

SELECT Max(numero) as numeroPedido FROM prontuario.tbprontuario

Até!

G

oq é esse numeroPedido?
oq eu estou fazendo com o rs.getint ta certo?

M

“numeroPedido” é um nome aleatorio que dei para o campo. Podes dar o nome que quiser e no rs.getInt() pegá-lo.
Eu não lembro como o mysql lida com nomes e aliases iguais, mas acho que deve funcionar se você mudar para “numero”.
Procure por “SQL column alias” para saber mais ( em geral é o operador “as” que faz isso ).

Até!

G
Ata blz, kara ele ta dando um problema na hora de pegar o valor da minha coluna ele ta retornando o seguinta na JtextField: "com.mysql.jdbc.ResultSet@1e6e305" o valor final apos o @ é aleatorio. Eu to fazendo desse jeito
try{
         
              sql ="SELECT Max(numero) as numero FROM prontuario.tbprontuario;";
              ResultSet rs = canal.executeQuery(sql);    
              if (rs.next())   
              rs.getInt("numero");
              n_prontuario.setText(rs+"");
                           
          } catch (SQLException ex) {   
           ex.printStackTrace();   
          }

pq ele ñ ta pegando o valor final do banco?

M

O método getInt() retorna um inteiro, mas você não está atribuindo esse inteiro a nenhuma variável.

Terias que fazer assim:

int valor = rs.getInt("numero"); n_prontuario.setText(valor+"");

Até!

L

Ixi carinha acho que esse código nem funcionou hen…

Criado 12 de fevereiro de 2008
Ultima resposta 10 de jun. de 2011
Respostas 6
Participantes 3