Dificuldade com JTable

2 respostas
C

Bom dia a todos, estou com dificuldade em mostrar o conteudo pela minha tabela, ela não mostra erro mas não traz o que quero mostrar. Estou usando o netbeans e minha tabela está atrelada a minha DAO, se alguém puder me ajudar fico agradecida segue o codigo da minha tabela:

public class ModeloTabelaReserva extends AbstractTableModel{
    
    private int numLinhas;
    private ResultSet resultSet;
    private ArrayList<String[]> resultSetReservas;
    private ResultSetMetaData rsMetaData;//Essa classe pega todas as informacoes que estao no banco
    private ReservaDAO dao = new ReservaDAO();
    private static final String[] nomesColunas = {//mostra o nome do jeito que se quer é usado uma constante para nao vir numero indesejados
        "Código", "Nome Hóspede", "Número","Usuário", "Tipo Reserva", "Data Reserva",
        "Data Entrada","Data Saída","Horário Entrada","Horário Saída","Qtd Hóspedes","Valor Diária", "Status"
    };
   public String getColumnName(int quantasColunas) {//busca o nome das colunas como se quer
        return nomesColunas[quantasColunas];

    }

    public ModeloTabelaReserva() {
        ReservaDAO reservaDAO = new ReservaDAO();
        reservaDAO.consultarTodos();
    }

    public ModeloTabelaReserva(ResultSet resultset) throws SQLException {//Construtor
        rsMetaData = resultset.getMetaData();
        setResult(resultset);
        resultset.last();//posiciona no ultimo registro
        numLinhas = resultset.getRow();//pega o numero da linha em que se encontra

    }

    public void setResult(ResultSet resultset) throws SQLException {
        resultSetReservas = new ArrayList<String[]>();
        while (resultset.next()) {
            String[] linha = {//Povoa o array com os dados do banco
                resultset.getString("codReserva"),
                resultset.getString("Hospede_codHospede"),
                resultset.getString("Apartamento_codApartamento"),
                resultset.getString("Funcionario_codFuncionario"),
                resultset.getString("tipoReserva"),
                resultset.getString("dataReserva"),
                resultset.getString("dataEntrada"),
                resultset.getString("dataSaida"),
                resultset.getString("horarioEntrada"),
                resultset.getString("horarioSaida"),
                resultset.getString("qtdPessoas"),
                resultset.getString("valorDiaria"),
                resultset.getString("status"),
        };
            resultSetReservas.add(linha);
        }
        //Faz alteracoes de estrutura no JTable
        fireTableStructureChanged();
    }

    @Override
    public int getRowCount() {//Retorna a qtd de linhas
        return resultSetReservas.size();
    }

    @Override
    public int getColumnCount() {//Retorna o numero de colunas pelo metaData
        return nomesColunas.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {//Povoa a tabela pelo arrayList
        String[] linha = resultSetReservas.get(rowIndex);
        return linha[columnIndex];
    }

    public void deletarLinha(int linha) {
        resultSetReservas.remove(linha);//deteta do arrayList
        fireTableRowsDeleted(linha, linha);//deteta da tabela
    }
Minha ReservaDAO metódo listar:
public List<Reserva> consultarTodos() {
        List<Reserva> reservas = new ArrayList();
        //Abre conexao com o banco
        getBanco().abrir();

        String sql = " SELECT *FROM reserva LEFT JOIN hospede  ON  `Hospede_codHospede` =  hospede.codHospede "
                + "LEFT JOIN apartamento  ON  `Apartamento_codApartamento` = apartamento.codApartamento "
                + "LEFT JOIN funcionario ON  `Funcionario_codFuncionario` = funcionario.codFuncionario  ORDER BY codReserva";

        try {
            Statement stm = getBanco().getConexao().createStatement();
            //Faz a leitura no banco
            ResultSet rs = stm.executeQuery(sql); //Verifica se achou
            //Enquanto tiver proximo registro traga pra lista
            while (rs.next()) {
                reservaVO = new Reserva();
                reservaVO.setCodReserva(rs.getInt("codReserva"));
                reservaVO.setTipoReserva(rs.getString("tipoReserva"));
                reservaVO.setDataReserva(rs.getDate("dataReserva"));
                reservaVO.setDataEntrada(rs.getDate("dataEntrada"));
                reservaVO.setDataSaida(rs.getDate("dataSaida"));
                reservaVO.setHorarioEntrada(rs.getString("horarioEntrada"));
                reservaVO.setHorarioSaida(rs.getString("horarioSaida"));
                reservaVO.setQtdPessoas(rs.getString("qtdPessoas"));
                reservaVO.setValorDiaria(rs.getDouble("valorDiaria"));
                reservaVO.setStatus(rs.getString("status"));
                reservaVO.setCodHospede(rs.getInt("hospede.codHospede"));
                reservaVO.setCodHospede(rs.getInt("apartamento.codApartamento"));
                reservaVO.setCodHospede(rs.getInt("funcionario.codFuncionario"));
                                             
                reservas.add(reservaVO);//adiciona na lista

            }
            rs.close(); //fecha o resultset
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        //Fecha a conexao
        getBanco().fechar();
        return reservas;
    }

Ela está vindo assim:

2 Respostas

R

Certa vez tive problema semelhante. Experimente separar a consulta SQL em 3 partes para ver como vem seu resultado… ajuda!

C

rickzale e como faria isso? vc poderia me dar um exemplo?

Criado 22 de março de 2016
Ultima resposta 22 de mar. de 2016
Respostas 2
Participantes 2