【问题标题】:Error while querying data vertx查询数据顶点时出错
【发布时间】:2017-09-26 18:30:43
【问题描述】:
    public static void findAll(Handler<AsyncResult<ChannelInfo[]>> ar)
{
    //getConnection().query("SELECT &", arg1)
    getConnection().queryWithParams("SELECT * FROM Servers", new JsonObject(), res -> {
        if (res.succeeded() && res.result().size() > 0) {
            ChannelInfo[] channels = new ChannelInfo[res.result().size()];
            int count = 0;

            for (JsonObject row : res.result()) {
                channels[count++] = new ChannelInfo()
                    .setId(row.getInteger("srv_id"))
                    .setName(row.getString("srv_name"))
                    .setIp(row.getString("srv_ip"))
                    .setServerDomain(row.getString("srv_domain"))
                    .setPort(row.getInteger("srv_port"))
                    .setPosition(row.getInteger("srv_position"))
                    .setPromiseToFightFlag(row.getBoolean("srv_promise_to_fight_flag"))
                    .setMoreServerFlag(row.getBoolean("srv_more_server_flag"))
                    .setMaxRoom(row.getInteger("srv_max_room"))
                    .setNumber(row.getInteger("srv_number"))
                    .setAllowedRoomTypeId(row.getInteger("srv_allowed_room_type_id"))
                    .setLimitMinLV(row.getInteger("srv_limit_min_lv"))
                    .setLimitMaxLV(row.getInteger("srv_limit_max_lv"))
                    .setMaxClient(row.getInteger("srv_max_client"));
            }

            ar.handle(Future.succeededFuture(channels));
        } else {
            logger.error("Erro ao obter um usuário pelo nome", res.cause());
            ar.handle(Future.failedFuture(res.cause()));
        }
    });
}

错误:SQLConnection 类型中的方法 queryWithParams(String, JsonArray, Handler>) 不适用于参数 (String, JsonObject, ( res) -> {})

【问题讨论】:

    标签: vert.x


    【解决方案1】:

    替换...

    getConnection().queryWithParams("SELECT * FROM Servers", new JsonObject(), res ...
    

    ...与:

    getConnection().queryWithParams("SELECT * FROM Servers", new JsonArray(), res ...
    

    queryWithParams 方法需要以下参数:

    • 查询字符串
    • 查询参数
    • 处理响应的处理程序

    第二个参数必须是 JsonArray 不是 JsonObject。在您的情况下,您似乎没有传递任何参数,因此提供一个空的JsonArray(例如new JsonArray())就足够了。

    【讨论】:

    • for (JsonObject row : res.result()) { 只能遍历数组或 java.lang.Iterable 的实例
    • 我猜您的最后一条评论代表您在进行我建议的更改之后遇到的异常?在我看来,您传递给 queryWithParams 的 Handler 实例没有被键入以返回 Iterable,即 res.result() 不返回 Iterable。对于任何进一步的诊断,最好更新您的问题并提供MCVE,以便诊断此问题。
    猜你喜欢
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2018-11-29
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    相关资源
    最近更新 更多