У меня есть метод, называемый selectAll
, который должен возвращать записи, выбранные из базы данных, но когда я хочу, чтобы вернуть их как строки не позволяет это и дает мне:Vert.x: извлечения записей из базы данных
Local variable S defined in an enclosing scope must be final or effectively final.
Я попытался добавить финал в свою строку, но он по-прежнему остается неизменным.
Вот мой selectAll()
метод:
public String selectAll(String table, String order) {
String S;
S = "";
this.getCnx().getConnection(res -> {
if (res.succeeded()) {
SQLConnection connection = res.result();
connection.queryWithParams(ReqSql.SELECT_ALL, new JsonArray().add(table).add(order), (ar) -> {
if (ar.failed()) {
this.sendError(500, response);
} else {
JsonArray arr = new JsonArray();
ar.result().getRows().forEach(arr::add);
S = ar.result().getRows().toString();
response.putHeader("content-type", "application/json").end(arr.encode());
}
});
}
});
}
public AsyncSQLClient getCnx(){
JsonObject mySQLClientConfig = new JsonObject()
.put("host", "localhost")
.put("database", "test")
.put("username", "test")
.put("password", "test")
.put("port", 3306);
return MySQLClient.createShared(vertx, mySQLClientConfig);
}
И я создал еще один класс для моих запросов:
public class ReqSql {
public static final String SELECT_ALL = "SELECT * FROM ? ORDER BY ? ASC";
}
С уважением.