java - 异步数据库查询的返回值
问题描述
我正在寻找一种通用方法来从 HikariCP 数据库查询返回 ResultSet(或 CachedResultSet,因为连接关闭)
我环顾四周,一个建议的选项是使用带有回调的 FutureTask,这就是我尝试过的:
public static CachedRowSet query(String query) {
FutureTask<CachedRowSet> future =
new FutureTask(new Callable() {
public CachedRowSet call() {
try {
Connection connection = hikari.getConnection();
ResultSet set = connection.prepareStatement(query).executeQuery();
CachedRowSet crs = new CachedRowSetImpl();
crs.populate(set);
set.close();
connection.close();
return crs;
} catch (SQLException e) {
e.printStackTrace();;
return null;
}
}
});
try {
CachedRowSet crs = future.get();
return crs;
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
return null;
}
}
它只是挂起。整个方法没有完成,我想知道我做错了什么?(定期查询数据库是没有问题的,因为我刚才搬到了这里)
或者,您能否提出更好的选择并指导我前进?
解决方案
推荐阅读
- apache - WAMP phpMyAdmin 总是重定向到旧版本
- javascript - 如何在节点内获取节点
- python - 我正在尝试使用 pdfminer 在 python 中将数据提取为 HTML 元素
- java - Java - 如果返回值为零,比较器如何工作?
- coq - 没有在 coq 中明确指定类型的实例
- java - 链接 2 个对象并从每个对象中获取它们
- google-tag-manager - 有没有办法将容器的标签和触发器共享到谷歌标签管理器中的另一个容器
- google-cloud-platform - 创建新数据实验室实例时参数无效
- python - 当一个新的小部件被分配给它时,框架背景颜色消失(tkinter)
- java - 此服务器无法验证您是否有权访问所请求的文档