Problemas com jtable

3 respostas
A

tenho uma tabela que exibe varias turmas
nome, datas e etc, mas na coluna instrutor
aparece null.
alguem poderia me ajudar?

esta é minha tabela

private void atualizarTabela() {
       
        try {
            ArrayList<Turma> turmas = turmaDAO.buscarTodosTurmas();

            String[] colunas = new String[]{"Codigo","Turma", "Ini­cio", "Conclusão ", "Instrutor"};
            Object[][] dados = new Object[turmas.size()][5];

            for (int i = 0; i < turmas.size(); i++) {
                Turma turma = turmas.get(i);

                dados[i][0] = turma.getCodigo();
                dados[i][1] = turma.getNome();
                dados[i][2] = turma.convertDate("dd/MM/yy",turma.getDataInicio() );
                dados[i][3] = turma.convertDate("dd/MM/yy", turma.getDataConclusao());
                dados [i][4]= turma.getInstrutor().getNome(); //aparece null
                
            }

            DefaultTableModel dataModel = new DefaultTableModel(dados, colunas);
            TabelaTurma.setModel(dataModel);

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(this, "Erro " + ex.getMessage());
        }
    }

Este é o método que busca as turmas no banco

public ArrayList<Turma> buscarTodosTurmas() throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM turma";
        ResultSet rsTurma = smt.executeQuery(sql);

        ArrayList<Turma>turmas=new ArrayList<Turma>();
        while(rsTurma.next()){
            Turma turma =criarTurmaAPartirDoResultSet(rsTurma);
            turmas.add(turma);

        }

   return turmas;
     }

3 Respostas

MaTToS

Tem como colocar a classe toda DAO pra nos olharmos??

abrass!!!

Nicolas_Fernandes

Olá, Any!

Primeiro, na sua string SQL, coloque os campos todos separadinhos:

String sql = "SELECT T.Campo1, T.Campo2, T.Campo3 From Turmas T";

Beleza… O que você deve fazer agora, no while do ResultSet, é assim:

while (rsTurma.next()) {

   Turma turma = new Turma();
   turma.setCampo1(rsTurma.getLong(1));
   turma.setCampo2(rsTurma.getString(2));
   ...
   // Quando for a vez de setar o Instrutor, que é um objeto, faça assim:
   turma.setInstrutor(InstrutorDAO.readById(rsTurma.getLong(/*A posição do campo na consulta SQL*/));
}

Assim, você vai buscar um objeto Instrutor devido lá na Tabela Instrutor (ou seja lá qual for), e setar lá!

Espero ter ajudado!

[]'s

A

Esta e minha classe TurmaDao

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package autoescola.bancosdedados;

import autoescola.modelo.Turma;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

/**
 *
 * @author Administrador
 */
public class TurmaDAO {

    InstrutoresDAO instrutorDAO = new InstrutoresDAO();
    TurmaAlunoDAO turmaAlunoDAO = new TurmaAlunoDAO();

    public void inserir(Turma turma) throws SQLException {
        String sql = "INSERT INTO turma( nome,instrutor, datainicio, vaga, dataconclusao) values (?,?,?,?,?)";
        PreparedStatement smt = conexao.pegarConexao().prepareStatement(sql);

        smt.setString(1, turma.getNome());
        smt.setInt(2, turma.getInstrutor().getCodigo());
        smt.setDate(3, new Date(turma.getDataInicio().getTime()));
        smt.setString(4, turma.getVagas());
        smt.setDate(5, new Date(turma.getDataInicio().getTime()));
      
        smt.execute();
        smt.close();

    }

    public Turma buscar(int codigo) throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM turma a WHERE a.codigo = " + codigo + ";";
        ResultSet rsTurma = smt.executeQuery(sql);
        if (rsTurma.next()) {
            Turma turma = new Turma();
            turma.setCodigo(rsTurma.getInt("codigo"));

            return turma;
        }
        return null;
    }

    public void atualizar(Turma turma) throws SQLException {
        String sql = "update turma set  nome=?, instrutor=?, dataInicio=?, vaga =?, dataconclusao";
        PreparedStatement smt = conexao.pegarConexao().prepareStatement(sql);

        smt.setString(1, turma.getNome());
        smt.setInt(2, turma.getInstrutor().getCodigo());
        smt.setDate(3,(java.sql.Date) turma.getDataInicio());
        smt.setString(4, turma.getVagas());
        smt.setDate(5,(java.sql.Date) turma.getDataConclusao());
        smt.execute();
        smt.close();

    }

    public void excluir(Turma turma) throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "DELETE FROM turma WHERE codigo = " + turma.getCodigo() + ";";
        smt.execute(sql);

    }

    public ArrayList<Turma> buscarPorNome(String nome) throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM turma a WHERE a.nome LIKE '" + nome + "%';";
        ResultSet rsTurma = smt.executeQuery(sql);

        ArrayList<Turma> turmas = new ArrayList<Turma>();
        while (rsTurma.next()) {

            Turma turma = criarTurmaAPartirDoResultSet(rsTurma);
            turmas.add(turma);
        }
        return turmas;
    }

   private Turma criarTurmaAPartirDoResultSet(ResultSet rsTurma) throws SQLException {

       Turma turma = new Turma();
       turma.setNome(rsTurma.getString("nome"));
       turma.setCodigo(rsTurma.getInt("codigo"));
       turma.setInstrutor(instrutorDAO.buscar(rsTurma.getInt("instrutor")));
       turma.setDataInicio(rsTurma.getDate("datainicio"));
       turma.setVagas(rsTurma.getString("vaga"));
       turma.setDataConclusao(rsTurma.getDate("dataconclusao"));


      return turma;
  }

    public ArrayList<Turma> buscarTodosTurmas() throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM turma";
        ResultSet rsTurma = smt.executeQuery(sql);

        ArrayList<Turma>turmas=new ArrayList<Turma>();
        while(rsTurma.next()){
            Turma turma =criarTurmaAPartirDoResultSet(rsTurma);
            turmas.add(turma);

        }

   return turmas;
     }
   
}

Aqui é o metodo que busca o instrutor pelo codigo

public Instrutores buscar(int codigo) throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM instrutor a WHERE a.codigo = " + codigo + ";";
        ResultSet rsFuncionario = smt.executeQuery(sql);
        if (rsFuncionario.next()) {
            Instrutores funcionario = new Instrutores();
            funcionario.setCodigo(rsFuncionario.getInt("codigo"));
            return funcionario;
        }
        return null;
    }
Criado 16 de setembro de 2009
Ultima resposta 17 de set. de 2009
Respostas 3
Participantes 3