Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

O meu método de listar não funciona.

Olá, pessoal Estou com o seguinte problema de acordo com a explicação do professor, eu fiz o código porém em outro projeto que eu tinha ao tentar rodar o meu projeto pra listar contas no meu no caso listar tarefas não funciona, colarei o código abaixo pra vocês verem Escolho a opção e não mostra nada vou colar todas as classes menos a ConnectionFactory método listar: public Set listar() { Set tarefas = new HashSet(); String sql = "SELECT * FROM gerenciador_tarefa"; try { PreparedStatement ps = conn.prepareStatement(sql); ResultSet resultSet = ps.executeQuery(); while (resultSet.next()) { String nomeTarefa = resultSet.getString("nomeTarefa"); String descricaoTarefa = resultSet.getString("descricaoTarefa"); int prioridade = resultSet.getInt("prioridade"); tarefas.add(new Tarefas(nomeTarefa, descricaoTarefa, prioridade)); } } catch (SQLException e) { throw new RuntimeException(e); } Menu de opções: package gerenciador_tarefas;

import java.util.InputMismatchException; import java.util.Scanner;

public class Menu { private int opcao; private Scanner leitura; private Tarefas tarefa; private ListaTarefas tarefas; public Menu() { this.leitura = new Scanner(System.in); this.tarefas=new ListaTarefas(); }

public void exibiMenu() {
    while (true) {
        try {
            System.out.println("Escolha sua opção. 1: cadastrar tarefa. 2: listar tarefas . 3: sair do gerenciador.");
            opcao=leitura.nextInt();
            switch (opcao) {
            case 1: {
                tarefas.adicionarTarefa();
                System.out.println("Tarefa cadastrada.");
                break;
            }
            case 2: {
                tarefas.listarTarefas();
                break;
            }
            case 3: {
                leitura.close();
                return;
            }
            default:
                throw new IllegalArgumentException("Opção inválida.");
            }
        } catch (InputMismatchException e) {
            System.out.println("Só tecle números, por favor.");
            leitura.nextLine();
        }
    }
}

}Classe Tarefa: package gerenciador_tarefas;

public class Tarefas { private String nomeTarefa; private String descricaoTarefa; private int prioridade; public Tarefas(String nomeTarefa, String descricaoTarefa, int prioridade) { this.nomeTarefa=nomeTarefa; this.descricaoTarefa=descricaoTarefa; this.prioridade=prioridade; } @Override public String toString() { return ("Nome da tarefa: \n"+ nomeTarefa + "prioridade da tarefa: \n"+ prioridade); } public String getNomeTarefa() { return nomeTarefa; } public String getDescricaoTarefa() { return descricaoTarefa; } public int getPrioridade() { return prioridade; }

} Gerenciador com o main: package gerenciador_tarefas;

import java.util.Scanner;

public class Gerenciador {

public static void main(String[] args) {
    System.out.println("Bem vindo ao gerenciador de tarefas.");
    Menu menu = new Menu();
    menu.exibiMenu();
}

}

4 respostas

E aí, Carlos! Beleza?

Dei uma olhada no teu código e a princípio não vi nada errado, mas algumas coisinhas podem estar passando batido.

Primeiro, já tentou debugar pra ver se a função listar() tá sendo chamada mesmo? Às vezes a gente acha que tá chamando, mas rola algum pulo do gato aí.

Outra coisa, no teu loop do Menu, quando tu escolhe a opção 2 (listar tarefas), tá chamando tarefas.listarTarefas();, mas não vi onde exatamente essa função chama o listar() da tua ListaTarefas. Será que não é isso que tá faltando?

E, só pra garantir, não esquece de conferir se tem mesmo alguma tarefa no banco de dados. Às vezes, o SQL tá certo, mas não tem nada lá, aí não aparece nada mesmo.

Se nada disso resolver, manda mais detalhes que a gente tenta quebrar a cabeça juntos! Boa sorte aí!

Olá, tudo bem? Obbrigado por tentar me ajudar Na verdade, eu tentei olhar o modo debug mais não aparentou ter nem um erro a execução aconteceu com sucesso A, o método listarTarefas está naquela classe listaTarefas que colei aqui o código vou te mostrar novamente Veja no código que lá em cima no menu eu crio uma lista com essa classe na classe menu E uso ca em baixo vou mostrar as duas partes pra você ver: Essa é a classe de lista de tarefas:package gerenciador_tarefas;

import java.sql.Connection; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; import java.util.Set;

public class ListaTarefas { private String nomeTarefa; private String descricaoTarefa; private int prioridade; ArrayList tarefas; private ConnectionFactory connection; private Scanner leitura; private Tarefas tarefa;

public ListaTarefas() {
    tarefas = new ArrayList<>();
    this.connection = new ConnectionFactory();
    this.leitura = new Scanner(System.in);
}

public Set<Tarefas> listarTarefas() {
    Connection conn = new ConnectionFactory().recuperarConexao();
    return new GerenciadorDao(conn).listar();
}

public void adicionarTarefa() {
    System.out.println("digite o nome da tarefa.");
    nomeTarefa = leitura.next();
    leitura.nextLine();
    System.out.println("Digite a descrição da tarefa.");
    descricaoTarefa = leitura.nextLine();
    System.out.println("Agora digite a prioridade da tarefa de 1 a 5.");
    prioridade = leitura.nextInt();

    // Recupera uma conexão com o banco de dados
    Connection conn = connection.recuperarConexao();

    // Cria uma instância de GerenciadorDao e chama o método salvar para inserir a
    // tarefa no banco de dados
    new GerenciadorDao(conn).salvar(nomeTarefa, descricaoTarefa, prioridade);

    // Adiciona a tarefa à lista de tarefas
    tarefas.add(tarefa);
}}

Agora esse é o código do menu: package gerenciador_tarefas;

import java.util.InputMismatchException; import java.util.Scanner;

public class Menu { private int opcao; private Scanner leitura; private Tarefas tarefa; private ListaTarefas tarefas; public Menu() { this.leitura = new Scanner(System.in); this.tarefas=new ListaTarefas(); }

public void exibiMenu() {
    while (true) {
        try {
            System.out.println("Escolha sua opção. 1: cadastrar tarefa. 2: listar tarefas . 3: sair do gerenciador.");
            opcao=leitura.nextInt();
            switch (opcao) {
            case 1: {
                tarefas.adicionarTarefa();
                System.out.println("Tarefa cadastrada.");
                break;
            }
            case 2: {
                tarefas.listarTarefas();
                break;
            }
            case 3: {
                leitura.close();
                return;
            }
            default:
                throw new IllegalArgumentException("Opção inválida.");
            }
        } catch (InputMismatchException e) {
            System.out.println("Só tecle números, por favor.");
            leitura.nextLine();
        }
    }
}

} Se você ver eu crio uma estância da classe listaTarefaas lá em cima. Sobre o banco de dados sim, tem tarefas cadastradas a opção 1 por exemplo, cadastra de boa inclusive eu até chequei o erro é só na 2.

O engraçado que reli todo código e não achei nada, tal vez tenha um pequeno erro que eu não esteja vendo.

solução!

Olá, o problema é tão simples tava perto de mim e não estava vendo eu lembro que no curso de java toda coleção ou seja lista, set e etc tem que ser iterado e eu estava recebendo o retorno porém não estava iterando sobre ela Depois de quebrar a cabeça e pedir ajuda ao gpt, eu consegui resover o erro.