java.sql.SQLException:ResultSet在SQLite中关闭

时间:2019-09-05 17:58:10

标签: java sql sqlite

我正在使用SQLite。当我试图获得一个int时,它不起作用。 我在程序的前面使用了这种技巧,但是现在它不再起作用了。我,霍皮,您可以帮助我。 PS:对不起,我的英语不好。 我要在这里写一些随机的想法,因为这个窗口说,我必须再写几个词,因为有更多的代码然后是文本。

获取方法

    public static boolean getBold(UUID uuid) {
        try {
            PreparedStatement state = MySQL.c.prepareStatement("SELECT * From Chat where uuid=?");
            state.setString(1, uuid.toString());

            ResultSet rs = state.executeQuery();
            rs.next();

            int i = rs.getInt("bold");


            rs.close();
            state.close();

            if(i == 1){
                return true;
            }else {
                return false;
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        return false;

    }

错误:

[19:42:36] [Server thread/WARN]: java.sql.SQLException: ResultSet closed
[19:42:36] [Server thread/WARN]:    at org.sqlite.RS.checkOpen(RS.java:63)
[19:42:36] [Server thread/WARN]:    at org.sqlite.RS.findColumn(RS.java:108)
[19:42:36] [Server thread/WARN]:    at org.sqlite.RS.getInt(RS.java:293)
[19:42:36] [Server thread/WARN]:    at de.primeapi.chatsystem.mysql.ChatStats.getBold(ChatStats.java:57)
[19:42:36] [Server thread/WARN]:    at de.primeapi.chatsystem.commands.BoldCommand.onCommand(BoldCommand.java:22)
[19:42:36] [Server thread/WARN]:    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[19:42:36] [Server thread/WARN]:    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[19:42:36] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
[19:42:36] [Server thread/WARN]:    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[19:42:36] [Server thread/WARN]:    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
[19:42:36] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[19:42:36] [Server thread/WARN]:    at java.lang.Thread.run(Thread.java:748)

我的SQLClass:

    public static Connection c;

    public static void connect() {
        try {
            Class.forName("org.sqlite.JDBC");
            String url = "jdbc:sqlite:plugins/ChatSystem/database.sql";
            c = DriverManager.getConnection(url);
            System.out.println("[SQLite] Connected.");
        } catch (SQLException e) {
            System.out.println("[SQLite] Connection failed.");
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void disconnect() {
        if (c != null) {
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void update(String qry) {
        try {
            Statement stmt = c.createStatement();
            stmt.executeUpdate(qry);
            stmt.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
            disconnect();
            connect();
        }
    }

1 个答案:

答案 0 :(得分:0)

当您重用SQL语句或查询为空时,将显示错误java.sql.SQLException:ResultSet关闭。您可以开始检查这两点。