PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

client Vertx JDBC queryWithParams - comment ajouter une liste ?

La réponse courte est que vous ne pouvez pas ajouter une liste en tant que paramètre de requête avec le client générique Vertx JDBC, mais puisque vous utilisez Postgres, il existe une bibliothèque spécifique à Postgres appelée vertx-pg-client que vous pouvez utiliser. J'ai implémenté à peu près la même requête que vous avec ce code :

List<String> currencies = whatever();
String uri = "your-uri";
String query = "select from table where currency = any($1)";
PgConnection.connect(vertx, uri, connectionResult -> {
    if (connectionResult.failed()) {
        // handle
    } else {
        PgConnection connection = connectionResult.result();
        Tuple params = Tuple.of(currencies);

        doQuery(query, connection, params).setHandler(queryResult -> {
            connection.close();
            msg.reply(queryResult.result());
        });
    }
});

    private Future<String> doQuery(String sql, PgConnection connection, Tuple params) {
        Promise<String> promise = Promise.promise();
        connection.preparedQuery(sql, params, res -> {
            if (res.failed()) {
                // log
                promise.fail(res.cause());
            } else {
                RowSet<Row> rowSet = res.result();
                // do something with the rows and construct a return object (here, a string)
                String result = something;
                promise.complete(result);
            }
        });
        return promise.future();
    }

Tout le crédit revient à @tsegismont qui m'a aidé avec la même question ici .