Guest Kawaii Postado Julho 11, 2018 Denunciar Compartilhar Postado Julho 11, 2018 Olá, estou utilizando o código abaixo para pegar todos os reports do banco de dados, porém, a List está vindo VAZIA. public List<Getter> getGetters() { List<Getter> getters = new ArrayList<>(); new BukkitRunnable() { @Override public void run() { try { PreparedStatement ps = FancyReportar.getFancyReportar().getMysql().getConnection() .prepareStatement("SELECT * FROM reportados"); ResultSet rs = ps.executeQuery(); while (rs.next()) { Getter getter = new Getter(); getter.setName(rs.getString("name")); getter.setBy(rs.getString("by")); getter.setReason(rs.getString("reason")); getter.setServer(rs.getString("server")); getter.setDate(rs.getString("date")); getters.add(getter); } ps.close(); rs.close(); } catch (Exception e) { e.printStackTrace(); } } }.runTaskAsynchronously(FancyReportar.getFancyReportar()); return getters; } O que pode ser? OBS: Se eu adicionar uma "getter" manualmente na List, ela não fica empty OBS²: Não, o banco de dados não está vazio. Link para o comentário Compartilhar em outros sites More sharing options...
0 RUSHyoutuber Postado Julho 11, 2018 Denunciar Compartilhar Postado Julho 11, 2018 Aquele rs.next() seria um iterator? tenta colocar uns debugs. creio eu que colocando uns 1000 debugs vc vai descobrir logo onde ta o problema kkk eu faço isso quando tem erros que eu ñ consigo arrumar. Pq isso da dentro de uma Runnable? Link para o comentário Compartilhar em outros sites More sharing options...
0 Out of Orbit Postado Julho 11, 2018 Denunciar Compartilhar Postado Julho 11, 2018 Não tenho certeza, mas acho que isso está acontecendo porque esse código aí está assíncrono. Faça um teste, chame o método de forma síncronizada e veja se o erro persiste. Link para o comentário Compartilhar em outros sites More sharing options...
0 Sr_Edition Postado Julho 11, 2018 Denunciar Compartilhar Postado Julho 11, 2018 public List<Getter> getGetters() { List<Getter> getters = new ArrayList<>(); new BukkitRunnable() { @Override public void run() { try { PreparedStatement ps = FancyReportar.getFancyReportar().getMysql().getConnection() .prepareStatement("SELECT * FROM reportados"); ResultSet rs = ps.executeQuery(); while (rs.next()) { Getter getter = new Getter(); getter.setName(rs.getString("name")); getter.setBy(rs.getString("by")); getter.setReason(rs.getString("reason")); getter.setServer(rs.getString("server")); getter.setDate(rs.getString("date")); getters.add(getter); } ps.close(); rs.close(); } catch (Exception e) { e.printStackTrace(); } } }.runTaskAsynchronously(FancyReportar.getFancyReportar()); return getters; } Você precisa usar o método sincronizado, sempre que você usa async você não espera os itens serem adicionados a lista e o método sempre vai retornar a lista antes de adicionar os itens Link para o comentário Compartilhar em outros sites More sharing options...
0 Dery Postado Julho 11, 2018 Denunciar Compartilhar Postado Julho 11, 2018 Perceba seu próprio código, cara... O problema, como já foi falado, está parte assíncrona do código. Você declara uma lista e imediatamente retorna ela, se olhar bem, afinal, o que é assíncrono não espera outras tarefas para poder acontecer. Link para o comentário Compartilhar em outros sites More sharing options...
0 Wolf_131 Postado Julho 12, 2018 Denunciar Compartilhar Postado Julho 12, 2018 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.Atenciosamente,Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Kawaii
Olá, estou utilizando o código abaixo para pegar todos os reports do banco de dados, porém, a List está vindo VAZIA.
O que pode ser?
OBS: Se eu adicionar uma "getter" manualmente na List, ela não fica empty
OBS²: Não, o banco de dados não está vazio.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados