Ir para conteúdo
  • 0

[Dúvida] List empty


Guest Kawaii

Pergunta

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

5 respostass a esta questão

Posts Recomendados

  • 0

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

  • 0


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

:D

 

Link para o comentário
Compartilhar em outros sites

  • 0

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...