sql >> Base de Datos >  >> RDS >> PostgreSQL

Vertx JDBC client queryWithParams:¿cómo agregar una lista?

La respuesta breve es que no puede agregar una lista como parámetro de consulta con el cliente Vertx JDBC genérico, pero dado que está usando Postgres, hay una biblioteca específica de Postgres llamada vertx-pg-client que puede usar. Implementé aproximadamente la misma consulta que hiciste con este código:

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();
    }

Todo el crédito va para @tsegismont que me ayudó con la misma pregunta aquí .