Ir para conteúdo
  • 0

SQLite [Dúvida]


yLR111

Pergunta

Estou desenvolvendo um plugin de blocos quebrados e queria saber melhor maneira de armanezar eles

estou fazendo o seguinte criar HashMap para a contagem dos blocos e quando desligar servidor salvar essa HashMap no SQLite

e estou em duvida como fazer o Load desses blocos?

 

SALVAR BLOCOS:

	public static void saveBlocos() {
		for(Entry<Player, Integer> player: blocos.entrySet()){
			try {
				SQL.addBlocos(player.getKey(), player.getValue());
				Bukkit.getConsoleSender().sendMessage("§aBlocos salvo com sucesso.");
			} catch (SQLException e) {
				Bukkit.getConsoleSender().sendMessage("§cOcorreu um erro ao salvar os blocos.");
				e.printStackTrace();
			}
		}
	}

 

                                                                                                                                            SQL:

	public SQL(){
		try {
			Connection c;
			Class.forName("org.sqlite.JDBC");
			c = DriverManager.getConnection("jdbc:sqlite:plugins/PutSQL/storage.db");
			Statement stmt = c.createStatement();
			stmt.execute("CREATE TABLE IF NOT EXISTS Blocos (Player TEXT, Blocos INT)");
			Bukkit.getConsoleSender().sendMessage("§e[PutSQL] SQL conectado com sucesso!");
			c.close();
			stmt.close();
		} catch (Exception e){
			e.printStackTrace();
		}
	}

 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Simplesmente você pegará todos os valores da sua tabela usando o Select e vai puxar a quantidade de blocos quebrados e quem os quebrou e armazená-los novamente em seu hashmap.

try(ResultSet rs = c.createStatment().executeQuery("SELECT * FROM `Blocos`")){
	while(rs.next()) {
		String player = rs.getString("Player");
		int amount = rs.getInt("Blocos");
		map.put(player, amount);
	}
}

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, SrBlecaute disse:

Simplesmente você pegará todos os valores da sua tabela usando o Select e vai puxar a quantidade de blocos quebrados e quem os quebrou e armazená-los novamente em seu hashmap.

Sim, mas como seria o codigo pra pegar todos os jogadores, isso que estou em duvida.

Link para o comentário
Compartilhar em outros sites

  • 0
28 minutos atrás, SrBlecaute disse:

Simplesmente você pegará todos os valores da sua tabela usando o Select e vai puxar a quantidade de blocos quebrados e quem os quebrou e armazená-los novamente em seu hashmap.

  • Segue o exemplo abaixo:
    // use mysql + hikari: (example)
     public void load() {
    	  try {
    		  PreparedStatement ps = connection.prepareStatement("SELECT * FROM <table>");
    		  ResultSet rs = ps.executeQuery();
    		   while(rs.next()) {
    			  map.put(rs.getString("<player>"), rs.getInt("<blocks>"));
    		    }
    	  } catch(SQLException ex) {}				
      }

    P.S: Recomendo fazer em async e usando classe objeto, INTEGER é bem limitado, use DOUBLE ou LONG.
    P.S (2): Aprenda o básico do que você deseja fazer, até porque coletar 1 valor do banco de dados  é o mínimo que você precisa saber para começar a usar o banco de dados.

    Use isso caso seja um projeto pessoal e tenha os requisitos que ele pede.

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, SrBlecaute disse:

eu já tinha mandado ksks

  • Não vi e você deu um exemplo de try with resource, coisa que provavelmente ele não conheça. Então dar um código que uma pessoa não conheça vai faze-la ter mais dificuldade ainda.
Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, iHuck disse:
  • Não vi e você deu um exemplo de try with resource, coisa que provavelmente ele não conheça. Então dar um código que uma pessoa não conheça vai faze-la ter mais dificuldade ainda.

kk realmente, foi força do hábito colocar ele odeio ter quer da close manualmente, e seu método tem que fazer esse close no método finnally pq se der uma exceção no meio ainda vai continuar aberta, então vai dar na mesma. Mas ai é outro caso. 

Link para o comentário
Compartilhar em outros sites

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