【发布时间】:2019-04-29 22:55:27
【问题描述】:
我正在尝试创建一个命令,我可以将不同的查询发送到 SQLite / Mysql DB,并将结果集返回给正在调用的任何函数。需要能够处理2列还是15列。
以下不起作用 - 大概是因为它关闭了结果集/连接,但我不知道该怎么做。
想法?
public static ResultSet queryDB(String query) {
try {
Connection connection = DriverManager.getConnection("jdbc:sqlite:" + Settings.SQLITE_DB_PATH);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
resultSet.close();
statement.close();
connection.close();
return resultSet;
} catch (SQLException ex) {
Logger.getLogger(SQLInterp.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
【问题讨论】:
-
你可以通过它,只要你不关闭它,或者它各自的
Statement/Connection,然后再尝试读取它。 -
Jacob G - 这不会导致内存泄漏吗?
-
假设你使用后关闭它,没有。
-
关闭前返回结果怎么关闭?
-
@DotSlashShell 一种选择是不返回
ResultSet,而是将Consumer<ResultSet>作为参数传入ResultSet本身。