如何从rxjava获取密钥在vert.x中插入查询 [英] how to get a key from rxjava insert query in vert.x

查看:50
本文介绍了如何从rxjava获取密钥在vert.x中插入查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在vert.x项目中有一个用rxjava样式编写的insert方法.在我的方法中,我运行一个插入查询以将记录插入ms sql服务器中.我想获取新插入记录的自动递增键.我如何得到它?

I have an insert method in my vert.x project written in rxjava style. In my method I run an insert query to insert the record in ms sql server. I want to get the auto incremented key of newly inserted record. How I can get it?

这是我的代码.

 @Override
public Single<Record> save(Record record) {
    return new AsyncResultSingle<Record>(resultHandler -> {
        jdbcClient.rxGetConnection()
        .subscribe(connection -> {
            String sql = "INSERT into record (ani, template_id) values (?, ?)";
            JsonArray params = new JsonArray().add(record.ani).add(record.templateId);
            connection.rxQueryWithParams(sql, params)
            .doAfterTerminate(connection::close)
            .subscribe(resultSet -> {
                List<JsonObject> rows = resultSet.getRows();
                //how I can get a key or Record object which has been inserted?
                resultHandler.handle(Future.succeededFuture());
            }, onError -> {
                resultHandler.handle(Future.failedFuture(onError));
            });
        }, onError -> {
            resultHandler.handle(Future.failedFuture(onError));
        });
    });
}

推荐答案

我认为,而不是

List<JsonObject> rows = resultSet.getRows();

您正在寻找

List<JsonArray> results = resultSet.getResults();

您已经弄清楚了,但是要在这里更正我的答案:您还必须使用 rxUpdateWithParams 而不是 rxQueryWithParams .

you already figured it out, but to correct my answer here: you also have to use rxUpdateWithParams instead of rxQueryWithParams.

这篇关于如何从rxjava获取密钥在vert.x中插入查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆