亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java JDBC MySQL異常:“在ResultSet關閉后不允許進行操作”

Java JDBC MySQL異常:“在ResultSet關閉后不允許進行操作”

米琪卡哇伊 2019-11-20 14:28:38
我已經為此工作了將近一天半,但似乎無法解決此錯誤。我不知道為什么ResultSet被關閉。也許有些人可以幫助我。MySQL數據庫:package net.gielinor.network.sql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public abstract class MySQLDatabase {    private String host;    private String database;    private String username;    private String password;    private Connection connection = null;    private Statement statement;    public MySQLDatabase(String host, String database, String username, String password) {        this.host = host;        this.database = database;        this.username = username;        this.password = password;    }    public abstract void cycle() throws SQLException;    public abstract void ping();    public void connect() {        try {            Class.forName("com.mysql.jdbc.Driver").newInstance();            connection = DriverManager.getConnection(String.format("jdbc:mysql://%s/%s", host, database), username, password);            statement = connection.createStatement();        } catch (Exception e) {            e.printStackTrace();        }    }    public void ping(String table, String variable) {        try {            statement.executeQuery(String.format("SELECT * FROM `%s` WHERE `%s` = 'null'", table, variable));        } catch (Exception e) {            connect();        }    }    public ResultSet query(String query) throws SQLException {        if (query.toLowerCase().startsWith("select")) {            return statement.executeQuery(query);        } else {            statement.executeUpdate(query);        }        return null;    }    public Connection getConnection() {        return connection;    }}有了這些信息,我可以說這確實有效,我得到了我的信息,但不是游戲中的內容,而是重復出現的內容,就像用戶從未從查詢中刪除一樣,因此可以給他們帶來無限的回報。如果您需要更多信息,請隨時詢問。
查看完整描述

2 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

運行Delete查詢時,請使用與查詢中相同Statement的Select查詢。當您在同一位置重新執行時Statement,前一個ResultSet將關閉。


為了避免這種情況,您應該在Statement每次執行查詢時創建一個新的。因此,statement = connection.createStatement();從類中的connect()方法中刪除,并將MySQLDatabase該類中的所有內容替換statement為connection.createStatement()。您也可以選擇statement完全刪除私有變量。



查看完整回答
反對 回復 2019-11-20
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

當我們對diff使用相同的語句對象時,會發生此錯誤。類型

檢查Statement對象


查看完整回答
反對 回復 2019-11-20
  • 2 回答
  • 0 關注
  • 677 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號