[RESOLVIDO] Select retornando null

Tô quebrando a cabeça há uns dias e preciso de ajuda. Tenho um jmenuItem em menu principal onde eu coloquei a função de fechar caixa. Essa função resgata o último id no banco e seta algumas informações para o fechamento de caixa. O problema é que ao tentar recuperar as informações como o último status do caixa 0 e 1, ele retorna sempre 0. Se eu faço a consulta por meio de getPk_Caixa, ele retorna o valor certo do caixa, porém se eu faço o mesmo com os outros campos, retorna zero ou nulo. Obs: ele tá fazendo o set certinho. O problema é buscar o valor pra fazer um if no status 0 ou 1. E também não retorna nenhum erro.

viewPrincipal

private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {                                            
	//Fechar CAIXA
	JOptionPane.showConfirmDialog(null, "Deseja mesmo Fechar o caixa?");
	
	//recuperar id insert no ultimo registro caixa
	ModelCaixa model = controllerCaixa.getUltimoIdController(modelCaixa);
	
	if(model.getStatus_caixa() > 0) {
		//data_fechamento
		LocalDate local = LocalDate.now();
		java.sql.Date sqlDate2 = java.sql.Date.valueOf(local); 
		model.setData_fechamento(sqlDate2);
		
		//salvar no banco  
		boolean codigoVenda;    
		codigoVenda = controllerCaixa.atualizarCaixaController(model);
		
		if (codigoVenda == true) {
			JOptionPane.showMessageDialog(this, "Caixa Fechado com sucesso");
		} else {
			JOptionPane.showMessageDialog(this, "Erro ao fechar o caixa", "Erro", JOptionPane.ERROR_MESSAGE);
		}
	} else {
		//o if corre direto pra cá!
		JOptionPane.showMessageDialog(this, "Não há caixa aberto para fechar", "Erro", JOptionPane.ERROR_MESSAGE);
	}    
}                                           

Classe ModelCaixa

package model;

import static java.sql.JDBCType.VARCHAR;
import java.time.LocalDate;
import java.util.Date;


public class ModelCaixa {

    private int pk_caixa;
    private int fk_funcionario;
    private String hora_abertura;
    private Date data_abertura;
    private float valor_abertura;
    private int status_caixa;
    private float total_Movimentacoes;
    private float caixa_sangria;
    private String hora_fechamento;
    private Date data_fechamento;

    public ModelCaixa(){}

    /**
    * seta o valor de pk_caixa
    * @param pPk_caixa
    */
    public void setPk_caixa(int pPk_caixa){
        this.pk_caixa = pPk_caixa;
    }
	
    /**
    * @return pk_pk_caixa
    */
    public int getPk_caixa(){
        return this.pk_caixa;
    }

    /**
    * seta o valor de fk_funcionario
    * @param pFk_funcionario
    */
    public void setFk_funcionario(int pFk_funcionario){
        this.fk_funcionario = pFk_funcionario;
    }
	
    /**
    * @return fk_fk_funcionario
    */
    public int getFk_funcionario(){
        return this.fk_funcionario;
    }

    /**
    * seta o valor de hora_abertuta
    * @param pHora_abertuta
    */
    public void setHora_abertuta(String pHora_abertuta){
        this.hora_abertura = pHora_abertuta;
    }
	
    /**
    * @return hora_abertuta
    */
    public String getHora_abertura(){
        return this.hora_abertura;
    }

    /**
    * seta o valor de data_abertura
    * @param pData_abertura
    */
    public void setData_abertura(Date pData_abertura){
        this.data_abertura = pData_abertura;
    }
	
    /**
    * @return data_abertura
    */
    public Date getData_abertura(){
        return this.data_abertura;
    }

    /**
    * seta o valor de valor_abertura
    * @param pValor_abertura
    */
    public void setValor_abertura(float pValor_abertura){
        this.valor_abertura = pValor_abertura;
    }
	
    /**
    * @return valor_abertura
    */
    public float getValor_abertura(){
        return this.valor_abertura;
    }

    /**
    * seta o valor de status_caixa
    * @param pStatus_caixa
    */
  
    /**
    * @return status_caixa
    */

    /**
    * seta o valor de total_Movimentacoes
    * @param pTotal_Movimentacoes
    */
    public void setTotal_Movimentacoes(float pTotal_Movimentacoes){
        this.total_Movimentacoes = pTotal_Movimentacoes;
    }
	
    /**
    * @return total_Movimentacoes
    */
    public float getTotal_Movimentacoes(){
        return this.total_Movimentacoes;
    }

    /**
    * seta o valor de caixa_sangria
    * @param pCaixa_sangria
    */
    public void setCaixa_sangria(float pCaixa_sangria){
        this.caixa_sangria = pCaixa_sangria;
    }
	
    /**
    * @return caixa_sangria
    */
    public float getCaixa_sangria(){
        return this.caixa_sangria;
    }

    /**
    * seta o valor de hora_fechamento
    * @param pHora_fechamento
    */
    public void setHora_fechamento(String pHora_fechamento){
        this.hora_fechamento = pHora_fechamento;
    }
	
    /**
    * @return hora_fechamento
    */
    public String getHora_fechamento(){
        return this.hora_fechamento;
    }

    /**
    * seta o valor de data_fechamento
    * @param pData_fechamento
    */
    public void setData_fechamento(Date pData_fechamento){
        this.data_fechamento = pData_fechamento;
    }
	
    /**
    * @return data_fechamento
    */
    public Date getData_fechamento(){
        return this.data_fechamento;
    }

	// public Date setData_abertura(LocalDate localDate) {
	//     return this.data_abertura;
	// }

    /**
     * @return the status_caixa
     */
    public int getStatus_caixa() {
        return this.status_caixa;
    }

    /**
     * @param status_caixa the status_caixa to set
     */
    public void setStatus_caixa(int sstatus_caixa) {
        this.status_caixa = sstatus_caixa;
    }
    
    @Override
    public String toString(){
        return "ModelCaixa {" + "::pk_caixa = " + this.pk_caixa + "::fk_funcionario = " + this.fk_funcionario + "::hora_abertura = " + this.hora_abertura + "::data_abertura = " + this.data_abertura + "::valor_abertura = " + this.valor_abertura + "::status_caixa = " + this.status_caixa + "::total_Movimentacoes = " + this.total_Movimentacoes + "::caixa_sangria = " + this.caixa_sangria + "::hora_fechamento = " + this.hora_fechamento + "::data_fechamento = " + this.data_fechamento +  "}";
    }
}

Classe DaoCaixa

package DAO;

import model.ModelCaixa;
import conexoes.ConexaoMySql;
import java.util.ArrayList;
import model.ModelProdutos;

public class DAOCaixa extends ConexaoMySql {

    /**
    * grava Caixa
    * @param pModelCaixa
    * @return int
    */
    public int salvarCaixaDAO(ModelCaixa pModelCaixa){
        try {
            this.conectar();
            return this.insertSQL(
                "INSERT INTO tbl_caixa ("
                  //  + "pk_caixa,"
                    + "fk_funcionario,"
                    + "hora_abertura,"
                    + "data_abertura,"
                    + "valor_abertura,"
                    + "status_caixa,"
                    + "total_movimentacoes"
                    + "caixa_sangria,"
                    + "hora_fechamento,"
                    + "data_fechamento"
                + ") VALUES ("
               //     + "'" + pModelCaixa.getPk_caixa() + "',"
                    + "'" + pModelCaixa.getFk_funcionario() + "',"
                    + "'" + pModelCaixa.getHora_abertura() + "',"
                    + "'" + pModelCaixa.getData_abertura() + "',"
                    + "'" + pModelCaixa.getValor_abertura() + "',"
                    + "'" + pModelCaixa.getStatus_caixa() + "',"
                    + "'" + pModelCaixa.getTotal_Movimentacoes() + "'"
                    + "'" + pModelCaixa.getCaixa_sangria() + "',"
                   + "'" + pModelCaixa.getHora_fechamento() + "',"
                    + "'" + pModelCaixa.getData_fechamento() + "'"
                    + ""         
                + ");"
               
            );
        }catch(Exception e){
            e.printStackTrace();
            return 0;
        }finally{
            this.fecharConexao();
        }
    }

    /**
    * recupera Caixa
    * @param pPk_caixa
    * @return ModelCaixa
    */
    public ModelCaixa getCaixaDAO(int pPk_caixa){
        ModelCaixa modelCaixa = new ModelCaixa();
        try {
            this.conectar();
            this.executarSQL(
                "SELECT "
                    + "pk_caixa,"
                    + "fk_funcionario,"
                    + "hora_abertura,"
                    + "data_abertura,"
                    + "valor_abertura,"
                    + "status_caixa,"
                    + "total_movimentacoes,"
                    + "caixa_sangria,"
                    + "hora_fechamento,"
                    + "data_fechamento"
                 + " FROM"
                     + " tbl_caixa"
                 + " WHERE"
                     + " pk_caixa = '" + pPk_caixa + "'"
                + ";"
            );

            while(this.getResultSet().next()){
                modelCaixa.setPk_caixa(this.getResultSet().getInt(1));
                modelCaixa.setFk_funcionario(this.getResultSet().getInt(2));
                modelCaixa.setHora_abertuta(this.getResultSet().getString(3));
                modelCaixa.setData_abertura(this.getResultSet().getDate(4));
                modelCaixa.setValor_abertura(this.getResultSet().getFloat(5));
                modelCaixa.setStatus_caixa(this.getResultSet().getInt(6));
                modelCaixa.setTotal_Movimentacoes(this.getResultSet().getFloat(7));
                modelCaixa.setCaixa_sangria(this.getResultSet().getFloat(8));
                modelCaixa.setHora_fechamento(this.getResultSet().getString(9));
                modelCaixa.setData_fechamento(this.getResultSet().getDate(10));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.fecharConexao();
        }
        return modelCaixa;
    }
    
     //retornar ultimo id
     public ModelCaixa UltimoStatusDAO(int pModelCaixa){
          ModelCaixa modelCaixa = new ModelCaixa();
        try {
            this.conectar();
            this.executarSQL(
                    "SELECT"
                        + "Max pk_caixa,"
                        + "status_caixa"
                             + " FROM tbl_caixa" 
                + ";"
            );
            
             
            while(this.getResultSet().next()){
                 modelCaixa.setPk_caixa(this.getResultSet().getInt(1));
                modelCaixa.setStatus_caixa(this.getResultSet().getInt(2));
        
            }
            }catch(Exception e){
            e.printStackTrace();
            
        }finally{
            this.fecharConexao();
        }
      
        return modelCaixa;
    }

    /**
    * recupera uma lista de Caixa
        * @return ArrayList
    */
    public ArrayList<ModelCaixa> getListaCaixaDAO(){
        ArrayList<ModelCaixa> listamodelCaixa = new ArrayList();
        ModelCaixa modelCaixa = new ModelCaixa();
        try {
            this.conectar();
            this.executarSQL(
                "SELECT "
                    + "pk_caixa,"
                    + "fk_funcionario,"
                    + "hora_abertura,"
                    + "data_abertura,"
                    + "valor_abertura,"
                    + "status_caixa,"
                    + "total_movimentacoes,"
                    + "caixa_sangria,"
                    + "hora_fechamento,"
                    + "data_fechamento"
                 + " FROM"
                     + " tbl_caixa"
                + ";"
            );

            while(this.getResultSet().next()){
                modelCaixa = new ModelCaixa();
                modelCaixa.setPk_caixa(this.getResultSet().getInt(1));
                modelCaixa.setFk_funcionario(this.getResultSet().getInt(2));
                modelCaixa.setHora_abertuta(this.getResultSet().getString(3));
                modelCaixa.setData_abertura(this.getResultSet().getDate(4));
                modelCaixa.setValor_abertura(this.getResultSet().getFloat(5));
                modelCaixa.setStatus_caixa(this.getResultSet().getInt(6));
                modelCaixa.setTotal_Movimentacoes(this.getResultSet().getFloat(7));
                modelCaixa.setCaixa_sangria(this.getResultSet().getFloat(8));
                modelCaixa.setHora_fechamento(this.getResultSet().getString(9));
                modelCaixa.setData_fechamento(this.getResultSet().getDate(10));
                listamodelCaixa.add(modelCaixa);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.fecharConexao();
        }
        return listamodelCaixa;
    }

    /**
    * atualiza Caixa
    * @param pModelCaixa
    * @return boolean
    */
    public boolean atualizarCaixaDAO(ModelCaixa pModelCaixa){
        try {
            this.conectar();
            return this.executarUpdateDeleteSQL(
                "UPDATE tbl_caixa SET "
                    + "pk_caixa = '" + pModelCaixa.getPk_caixa() + "',"
                 //   + "fk_funcionario = '" + pModelCaixa.getFk_funcionario() + "',"
                  //  + "hora_abertura = '" + pModelCaixa.getHora_abertura() + "',"
                //    + "data_abertura = '" + pModelCaixa.getData_abertura() + "',"
                 //   + "valor_abertura = '" + pModelCaixa.getValor_abertura() + "',"
                    + "status_caixa = '" + pModelCaixa.getStatus_caixa() + "',"
                    + "total_movimentacoes = '" + pModelCaixa.getTotal_Movimentacoes() + "',"
                    + "caixa_sangria = '" + pModelCaixa.getCaixa_sangria() + "',"
                    + "hora_fechamento = '" + pModelCaixa.getHora_fechamento() + "',"
                    + "data_fechamento = '" + pModelCaixa.getData_fechamento() + "'"
                + " WHERE "
                    + "pk_caixa = '" + pModelCaixa.getPk_caixa() + "'"
                + ";"
            );
        }catch(Exception e){
            e.printStackTrace();
            return false;
        }finally{
            this.fecharConexao();
        }
    }

    /**
    * exclui Caixa
    * @param pPk_caixa
    * @return boolean
    */
    public boolean excluirCaixaDAO(int pPk_caixa){
        try {
            this.conectar();
            return this.executarUpdateDeleteSQL(
                "DELETE FROM tbl_caixa "
                + " WHERE "
                    + "pk_caixa = '" + pPk_caixa + "'"
                + ";"
            );
        }catch(Exception e){
            e.printStackTrace();
            return false;
        }finally{
            this.fecharConexao();
        }
    }

    //retornar ultimo id
     public ModelCaixa UltimoIdCaixaDAO(ModelCaixa pModelCaixa){
          ModelCaixa modelCaixa = new ModelCaixa();
        try {
            this.conectar();
            //return this.insertSQL(
           // this.insertSQL(
            this.executarSQL(
                "SELECT MAX(pk_caixa) FROM tbl_caixa"
            ); 
            while(this.getResultSet().next()){
                modelCaixa.setPk_caixa(this.getResultSet().getInt(1));
            }
            }catch(Exception e){
            e.printStackTrace();
            
        }finally{
            this.fecharConexao();
        }
       
        return modelCaixa;
}

Classe ControllerCaixa

package controller;

import model.ModelCaixa;
import DAO.DAOCaixa;
import java.util.ArrayList;
import model.ModelVendasProdutos;


public class ControllerCaixa {

    private DAOCaixa daoCaixa = new DAOCaixa();

    /**
    * grava Caixa
    * @param pModelCaixa
    * @return int
    */
    public int salvarCaixaController(ModelCaixa pModelCaixa){
        return this.daoCaixa.salvarCaixaDAO(pModelCaixa);
    }

    /**
    * recupera Caixa
    * @param pPk_caixa
    * @return ModelCaixa
    */
    public ModelCaixa getCaixaController(int pPk_caixa){
        return this.daoCaixa.getCaixaDAO(pPk_caixa);
    }
    
     public ModelCaixa getUltimoIdController(ModelCaixa pModelCaixa){
        return this.daoCaixa.UltimoIdCaixaDAO(pModelCaixa);
    }

     public ModelCaixa getUltimoStatusController(ModelCaixa pModelCaixa){
        return this.daoCaixa.UltimoIdCaixaDAO(pModelCaixa);
    }
    /**
    * recupera uma lista deCaixa
    * @param pPk_caixa
    * @return ArrayList
    */
    public ArrayList<ModelCaixa> getListaCaixaController(){
        return this.daoCaixa.getListaCaixaDAO();
    }
    
      
    /**
    * atualiza Caixa
    * @param pModelCaixa
    * @return boolean
    */
    public boolean atualizarCaixaController(ModelCaixa pModelCaixa){
        return this.daoCaixa.atualizarCaixaDAO(pModelCaixa);
    }

    /**
    * exclui Caixa
    * @param pPk_caixa
    * @return boolean
    */
    public boolean excluirCaixaController(int pPk_caixa){
        return this.daoCaixa.excluirCaixaDAO(pPk_caixa);
    }
    
   // public boolean salvarCaixaController(ArrayList<ModelCaixa> plistaModelAberturaaCaixa) {
  //      return this.daoCaixa.salvarCaixaDAO(plistaModelAberturaaCaixa);
  //  }
}

Classe ConexaoSql

package conexoes;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class ConexaoMySql {

    private boolean status = false;
    private String mensagem = "";   //variavel que vai informar o status da conexao
    private Connection con = null;  //variavel para conexao
    private Statement statement;
    private ResultSet resultSet;


    private String servidor = "localhost";
    private String nomeDoBanco = "dbvendas";
    private String usuario = "root";
    private String senha = "";
    
    public ConexaoMySql(){}
    
    public ConexaoMySql(String pServidor, String pNomeDoBanco, String pUsuario, String pSenha){
        this.servidor = pServidor;
        this.nomeDoBanco = pNomeDoBanco;
        this.usuario = pUsuario;
        this.senha = pSenha;
    }

    /**
     * Abre uma conexao com o banco
     * @return Connection
     */
    public Connection conectar(){
        try {
            //Driver do PostgreSQL
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();

            //local do banco, nome do banco, usuario e senha
            String url = "jdbc:mysql://localhost:3306/dbvendas?useTimezone=true&serverTimezone=America/Sao_Paulo";
            this.setCon((Connection) DriverManager.getConnection(url, usuario, senha));

            //se ocorrer tudo bem, ou seja, se conectar a linha a segui é executada
            this.status = true;
        }
        catch(ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e){
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        return this.getCon();
    }

    /**
     * Executa consultas SQL
     * @param pSQL
     * @return int
     */
    public boolean executarSQL(String pSQL){
        try {
            //createStatement de con para criar o Statement
            this.setStatement(getCon().createStatement());

            // Definido o Statement, executamos a query no banco de dados
            this.setResultSet(getStatement().executeQuery(pSQL));
            
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
        return true;
    }
    
    public boolean executarUpdateDeleteSQL(String pSQL){
        try {
            
            //createStatement de con para criar o Statement
            this.setStatement(getCon().createStatement());

            // Definido o Statement, executamos a query no banco de dados
            getStatement().executeUpdate(pSQL);
            
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
        return true;
    }
    
    /**
     * Executa insert SQL
     * @param pSQL
     * @return boolean
     */
    public int insertSQL(String pSQL){
        int status = 0;
        try {
            //createStatement de con para criar o Statement
            this.setStatement(getCon().createStatement());

            // Definido o Statement, executamos a query no banco de dados
            this.getStatement().executeUpdate(pSQL);
            
            //consulta o ultimo id inserido
            this.setResultSet(this.getStatement().executeQuery("SELECT last_insert_id();"));
            
            //recupera o ultimo id inserido
            while(this.resultSet.next()){
                status = this.resultSet.getInt(1);
            }
            
            //retorna o ultimo id inserido
            return status;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return status;
        }
    }

    /**
     * encerra a conexão corrente
     * @return boolean
     */
    public boolean fecharConexao(){
       try {
           if((this.getResultSet() != null) && (this.statement != null)){
               this.getResultSet().close();
               this.statement.close();
           }
           this.getCon().close();
           return true;
       } catch(SQLException e) {
           JOptionPane.showMessageDialog(null, e.getMessage());
       }
       return false;
    }

    /**
     * @return the status
     */
    public boolean isStatus() {
        return this.status;
    }

    /**
     * @return the mensagem
     */
    public String getMensagem() {
        return mensagem;
    }

    /**
     * @return the statement
     */
    public Statement getStatement() {
        return statement;
    }

    /**
     * @return the resultSet
     */
    public ResultSet getResultSet() {
        return resultSet;
    }

    /**
     * @param mensagem the mensagem to set
     */
    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    /**
     * @return the con
     */
    public Connection getCon() {
        return con;
    }

    /**
     * @param con the con to set
     */
    public void setCon(Connection con) {
        this.con = con;
    }

    /**
     * @param statement the statement to set
     */
    public void setStatement(Statement statement) {
        this.statement = statement;
    }

    /**
     * @param resultSet the resultSet to set
     */
    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    /**
     * @return the servidor
     */
    public String getServidor() {
        return servidor;
    }

    /**
     * @param servidor the servidor to set
     */
    public void setServidor(String servidor) {
        this.servidor = servidor;
    }

    /**
     * @return the nomeDoBanco
     */
    public String getNomeDoBanco() {
        return nomeDoBanco;
    }

    /**
     * @param nomeDoBanco the nomeDoBanco to set
     */
    public void setNomeDoBanco(String nomeDoBanco) {
        this.nomeDoBanco = nomeDoBanco;
    }

    /**
     * @return the usuario
     */
    public String getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }
}

Não sei muito sobre SQL, mas acho que o max só retorna o maior valor da coluna e não busca os outros elementos da linha.

Acredito que para resolver, teria que fazer algo assim:

select pk_caixa, status_caixa from tbl_caixa where pk_caixa = (SELECT MAX(pk_caixa) FROM tbl_caixa)
2 curtidas

Pior que retornou 0 até pra Pk agr

tentei: SELECT status_caixa from tbl_caixa where pk_caixa = (select max(pk_caixa) from tbl_caixa)
e deu certo! Obg!