I Methode selectAll
genannt haben, die Datensätze aus der Datenbank ausgewählt zurückkehren, aber wenn ich sie als String zurückgeben möchten sie es nicht erlauben, und gibt mir:Vert.x: Abrufen von Datensätzen aus der Datenbank
Local variable S defined in an enclosing scope must be final or effectively final.
Ich habe versucht, meinen String zu vervollständigen, aber es ist immer noch dasselbe.
Hier ist meine selectAll()
Methode:
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);
}
Und ich erstellen eine andere Klasse für meine Anfragen:
public class ReqSql {
public static final String SELECT_ALL = "SELECT * FROM ? ORDER BY ? ASC";
}
Grüße.