Exibir ultimo registro tabela

6 respostas
L

Pessoal , estou precisando exibir o valor do ultimo registro(id_venda) de uma tabela tentei adaptar um código que eu tinha, mas não deu certo, segue método criado:

public boolean consultar() 
{
  this.Conecta1=Conecta.getConecta();
  boolean autenticado=false;
    String sql;
    try {
       sql = "SELECT max(id_venda) FROM vendas";
       PreparedStatement stmt = Conecta1.prepareStatement(sql);
              
        ResultSet rs;
        rs = stmt.executeQuery();
        if (rs.next()) 
        {
                           
           int cod = rs.getInt("id_venda");
           stmt.close();
            jlblcodvenda.setText(String.valueOf(cod));
        } 

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro no acesso" + ex);  
    }
    return autenticado;
}

Estou chamando através de um botão este método, porém está dando erro, dizendo que o campo id_venda não existe, porém o campo existe na tabela. Se alguém tiver algum código para me ajudar.

6 Respostas

K

Correção:

http://www.melhorweb.com.br/artigo/18078-Como-pegar-o-ultimo-registro-de-uma-tabela-no-banco-de-dados-mySQL-r.htm

L

Obrigada pela dica gente, mas infelizmente não funcionou pois minha dúvida não é SQL, a instrução select max(id_venda) from vendas está correta acho que seja o problema em algum comando Java se alguém ainda puder ajudar…

J

Por mais que você tenha falado o erro que deu, melhor postar exatamente a mensagem interna que o java retornou. Poste também o script de create da tabela vendas. Isso pode ajudar mais a te ajudarem.

L

vamos lá:
A estrutura da tabela :

CREATE TABLE IF NOT EXISTS vendas
(

id_venda int(11) NOT NULL,

data_venda date DEFAULT NULL,

valor_venda double DEFAULT NULL,

id_cli int(11)
)

Onde id_venda e chave primária e id_cli e chave estrangeira com a tabela de clientes.

  • Eu criei um método para exibir o ultimo id_venda:
    
    public boolean consultar()
    
    {
    
    this.Conecta1=Conecta.getConecta();
    
    boolean autenticado=false;
    
    String sql;
    
    try {
    
    sql = “SELECT max(id_venda) FROM vendas”;
    
    PreparedStatement stmt = Conecta1.prepareStatement(sql);
    
    ResultSet rs;
          rs = stmt.executeQuery();
          if (rs.next()) 
          {
                             
             int cod = rs.getInt("id_venda");
             stmt.close();
              jlblcodvenda.setText(String.valueOf(cod));
          } 
    
      } catch (SQLException ex) {
          JOptionPane.showMessageDialog(null, "Erro no acesso" + ex);  
      }
      return autenticado;
    

    }

  • Estou chamando através de um botão:
    
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
    
    {
    
    consultar();
    
    }
    
  • É apresentado o erro: Erro no acesso SQLException: Column id_venda not found

J

Como você está retornando o resultado do max e não o campo id_venda, dê um nome pra essa coluna e mude também nos lugares que você obtêm ele, senão o banco dá um nome qualquer automático. Exemplo de como ficaria:

public boolean consultar() 
{
  this.Conecta1=Conecta.getConecta();
  boolean autenticado=false;
    String sql;
    try {
       sql = "SELECT max(id_venda) as max_id FROM vendas";
       PreparedStatement stmt = Conecta1.prepareStatement(sql);
              
        ResultSet rs;
        rs = stmt.executeQuery();
        if (rs.next()) 
        {
                           
           int cod = rs.getInt("max_id");
           stmt.close();
            jlblcodvenda.setText(String.valueOf(cod));
        } 

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro no acesso" + ex);  
    }
    return autenticado;
}

Você pode também deixar o SQL como estava e retornar o valor pelo índice da coluna.

L

Muitooooooooooo obrigada javaflex, problema resolvido, que Deus te abençoe

Criado 5 de novembro de 2016
Ultima resposta 6 de nov. de 2016
Respostas 6
Participantes 3