Retornando apenas uma coluna do Banco de Dados para ArrayList

4 respostas Resolvido
javaprogramação
rcarvalhoalencar

Olá, estou tentando adicionar uma lista de disciplinas salvar no meu banco de dados a um ArrayList e em seguida adicionar o Array a um ComboBox, mas o meu método está salvando as informações de todas as colunas, ex:
{::codigo = null::nome = PORTUGÊS::tipo = null::area = null}
{::codigo = null::nome = MATEMÁTICA::tipo = null::area = null
quero apenas o campo nome.

Meu método de busca no banco:

public ArrayList<modeloDisciplina> getListaDisciplinaNome() {
    ArrayList<modeloDisciplina> listamodelDisciplina = new ArrayList();
    modeloDisciplina modelDisciplina = new modeloDisciplina();
    try {
        this.conectar();
        this.executarSQL(
                "SELECT "
                + "nome"
                + " FROM"
                + " tab_disciplina"
                + ";"
        );

        while (this.getResultSet().next()) {
            modelDisciplina = new modeloDisciplina();
            modelDisciplina.setNome(this.getResultSet().getString(1));
            listamodelDisciplina.add(modelDisciplina);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    }
    return listamodelDisciplina;
}

//Adicionando ao jComboBox:

disciplinas = cdisciplina.getListaDisciplinaNome(); 
System.out.println(disciplinas);
DefaultComboBoxModel defaultComboBox = new 
DefaultComboBoxModel(disciplinas.toArray());
cbxDisciplinas.setModel(defaultComboBox);

Sei que criando outra classe de modelo eu conseguiria, adicionando somente os seter/getters do nome e tal, mas não quero criar um novo modelo só pra isso.
Alguém sabe como resolver isso?

4 Respostas

I

Se você não quer a entidade toda, então retorne o tipo de dado que queres. Se nome é String, retorne uma String:

public List<String> getListaDisciplinaNome() {
    List<String> nomesDisciplinas = new ArrayList<>);
    
    try {
        this.conectar();
        this.executarSQL(
                "SELECT "
                + "nome"
                + " FROM"
                + " tab_disciplina;"
        );

        while (this.getResultSet().next()) {
            listamodelDisciplina.add(this.getResultSet().getString("nome"));
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    }
    return listamodelDisciplina;
}
rcarvalhoalencar
Solucao aceita

RESOLVI O PROBLEMA ASSIM:

public ArrayList<String> getListaDisciplinaNome() {
    ArrayList<String> listamodelDisciplina = new ArrayList();
    modeloDisciplina modeloDisciplina = new modeloDisciplina();
    try {
        this.conectar();
        this.executarSQL(
                "SELECT "
                + "nome"
                + " FROM"
                + " tab_disciplina"
                + ";"
        );

        while (this.getResultSet().next()) {
            modeloDisciplina = new modeloDisciplina();
            modeloDisciplina.setNome(this.getResultSet().getString(1));
            listamodelDisciplina.add(modeloDisciplina.getNome());
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    }
    return listamodelDisciplina;
}

// ADICIONANDO AO JCOMBOBOX

ArrayList<String> list = new ArrayList<>();
list = cdisciplina.getListaDisciplinaNome();
DefaultComboBoxModel defaultComboBox = new DefaultComboBoxModel(list.toArray());
cbxDisciplinas.setModel(defaultComboBox);
I

Ué, você disse que não tinha os getters e setters e não queria criá-los…

rcarvalhoalencar

Eu disse que não criaria uma nova classe modelo com os getters e setters somente do nome, não disse que na classe modelo que eu já tenho não tinham eles.

Criado 11 de maio de 2020
Ultima resposta 11 de mai. de 2020
Respostas 4
Participantes 2