在下面的代码块中,我希望在异步执行SQL查询之前同步关闭连接,但显然SQL连接拒绝关闭,直到查询完成执行。
public static Future<List<JsonObject>> queryExecuter(JDBCClient jdbcClient, int id,String type) {
Promise<List<JsonObject>> promise = Promise.promise();
jdbcClient.getConnection(sqlConnection->{
if(sqlConnection.succeeded()) {
DTOQueryInfo dtoQueryInfo = queryHelper(sqlConnection.result(), id, type);
//Execute query
sqlConnection.result().queryWithParams(dtoQueryInfo.getSqlString(), dtoQueryInfo.getParams(), fetchSequenceResult->{
if (fetchSequenceResult.succeeded()) {
if (fetchSequenceResult.result()==null || fetchSequenceResult.result().getRows()==null || fetchSequenceResult.result().getRows().isEmpty()) {
logger.info("Query with no result ");
promise.fail("Failed!");
}else {
logger.info("Query Result:{} ", fetchSequenceResult.result().getRows());
promise.complete(fetchSequenceResult.result().getRows());
}
} else {
logger.error("Unable to inquiryActions :{}", fetchSequenceResult.cause());
promise.fail(new WSEXCP_NoAccessDefinedToNode(Integer.parseInt(String.valueOf(101)+String.valueOf(941)), "خطای داخلی. لطفا با راهبر سامانه تماس بگیرید.", HttpStatusEnum.SERVER_ERROR.getMin()));
}
});
}
else {
logger.error("خطای اتصال به دیتابیس : ", sqlConnection.cause());
promise.fail("خطای اتصال به دیتابیس");
}
sqlConnection.result().close();
});
return promise.future();
}
个字符
1条答案
按热度按时间0x6upsns1#
要确保在执行查询后关闭连接,应将close语句移动到queryWithParams回调中。
字符串