sql >> Database teknologi >  >> RDS >> PostgreSQL

Vertx JDBC client queryWithParams - hvordan tilføjer man en liste?

Det korte svar er, at du ikke kan tilføje en liste som en forespørgselsparameter med den generiske Vertx JDBC-klient, men da du bruger Postgres, er der et Postgres-specifikt bibliotek kaldet vertx-pg-client, som du kan bruge. Jeg implementerede nogenlunde den samme forespørgsel, som du gjorde med denne kode:

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

Al ære går til @tsegismont, som hjalp mig med det samme spørgsmål her .



  1. Oprettelse af forespørgsel, der returnerer id, hvis betingelse matches i rækker fra to tabeller

  2. ClassNotFoundException Når du kører JDBC gennem Javas Servlets

  3. Regelmæssig, gentagne, interaktion mellem et orakel og en smart kontrakt

  4. Laravel &multiple count forespørgsler ved hjælp af Eloquent