我已經為此工作了將近一天半,但似乎無法解決此錯誤。我不知道為什么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完全刪除私有變量。
添加回答
舉報
0/150
提交
取消