Tenho esse erro:
[20:59:46 WARN]: java.sql.SQLException: ResultSet closed
[20:59:46 WARN]: at org.sqlite.RS.checkOpen(RS.java:63)
[20:59:46 WARN]: at org.sqlite.RS.findColumn(RS.java:108)
[20:59:46 WARN]: at org.sqlite.RS.getInt(RS.java:293)
[20:59:46 WARN]: at com.dreammissoes.dreamnetwork.dreammissoes.missoes.MissoesClass.getMineradorBlocosQuebrados(MissoesClass.java:14)
[20:59:46 WARN]: at com.dreammissoes.dreamnetwork.dreammissoes.commands.MissoesCommand.onCommand(MissoesCommand.java:42)
[20:59:46 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[20:59:46 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[20:59:46 WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
[20:59:46 WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[20:59:46 WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
[20:59:46 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[20:59:46 WARN]: at java.lang.Thread.run(Unknown Source)
MissoesClass.java :
package com.dreammissoes.dreamnetwork.dreammissoes.missoes;
import java.sql.SQLException;
import org.bukkit.entity.Player;
import com.dreammissoes.dreamnetwork.dreammissoes.utils.SQliteConnector;
public class MissoesClass {
public static int getMineradorBlocosQuebrados(Player p) {
int i = 0;
try {
i += SQliteConnector.commandR("SELECT minerador FROM players WHERE uuid = '" + p.getUniqueId() + "';").getInt("minerador");
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public static boolean coletouMinerador(Player p) {
boolean b = false;
try {
int i = SQliteConnector.commandR("SELECT mineradorcoletado FROM players WHERE uuid = '" + p.getUniqueId() + "';").getInt("mineradorcoletado");
if(i == 0) {
b = false;
}
if(i == 1) {
b = true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return b;
}
public static void addBlocosMinerador(Player p, int quantidade) {
int blocosTotais = getMineradorBlocosQuebrados(p);
int blocos = blocosTotais + quantidade;
SQliteConnector.commandNR("UPDATE players SET minerador = " + blocos + " WHERE uuid = '" + p.getUniqueId() + "';");
}
}
MissoesCommand.java :
package com.dreammissoes.dreamnetwork.dreammissoes.commands;
import java.util.ArrayList;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import com.dreammissoes.dreamnetwork.dreammissoes.inventory.InventoryPlayer;
import com.dreammissoes.dreamnetwork.dreammissoes.missoes.MissoesClass;
import com.dreammissoes.dreamnetwork.dreammissoes.utils.Glow;
public class MissoesCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
if(cmd.getName().equalsIgnoreCase("missoes")) {
if(sender instanceof Player) {
Player p = (Player) sender;
InventoryPlayer invP = new InventoryPlayer("Missões", 6*9);
ItemStack minerador = Glow.addGlow(new ItemStack(Material.DIAMOND_PICKAXE));
ItemMeta mineradorM = minerador.getItemMeta();
mineradorM.setDisplayName("§eMinerador");
ArrayList<String> mineradorL = new ArrayList<String>();
if(MissoesClass.coletouMinerador(p)) {
mineradorL.add("");
mineradorL.add(" §7Quebre 1000 blocos e");
mineradorL.add(" §7receba uma recompensa.");
mineradorL.add("");
mineradorL.add("§aColetado!");
mineradorL.add("");
} else {
mineradorL.add("");
mineradorL.add(" §7Quebre 1000 blocos e");
mineradorL.add(" §7receba uma recompensa.");
mineradorL.add("");
mineradorL.add("§e" + MissoesClass.getMineradorBlocosQuebrados(p) + "/1000");
mineradorL.add("");
}
mineradorM.setLore(mineradorL);
minerador.setItemMeta(mineradorM);
invP.addItem(0, minerador);
p.openInventory(invP.getInventory());
}
}
return false;
}
}
SQliteConnector.java :
package com.dreammissoes.dreamnetwork.dreammissoes.utils;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.dreammissoes.dreamnetwork.dreammissoes.Main;
public class SQliteConnector {
private static Connection con;
public static void open() throws IOException, ClassNotFoundException, SQLException {
if(con != null) {
con = null;
} else {
File folder = new File(Main.getPlugin().getDataFolder().getAbsolutePath());
if(!folder.exists()) {
folder.mkdir();
}
File db = new File(folder, "quests.db");
if(!db.exists()) {
db.createNewFile();
}
String url = "jdbc:sqlite:" + db;
Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection(url);
//minerador, assassino, construtor, lenhador
//coletado
commandNR("CREATE TABLE IF NOT EXISTS players (uuid VARCHAR(30) PRIMARY KEY, minerador INTEGER, mineradorcoletado INTEGER, assassino INTEGER, assassinocoletado INTEGER, construtor INTEGER, construtorcoletado INTEGER, lenhador INTEGER, lenhadorcoletado INTEGER);");
}
}
public static void close() throws SQLException {
if(con != null) {
con.close();
}
}
public static void commandNR(String cmd) {
if(con != null) {
try {
PreparedStatement stm = con.prepareStatement(cmd);
stm.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static ResultSet commandR(String cmd) throws SQLException {
ResultSet r = con.prepareStatement(cmd).executeQuery();
return r;
}
}
Basicamente o ResultSet closed n deixa eu pegar nada nas tabelas, e eu n fechei o ResultSet, quero sempre manter ele aberto.
Como eu resolvo esse erro?