如何使用influxdb-java在查询中绑定参数

问题描述 投票:0回答:2

我无法在此代码中绑定参数:

import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BoundParameterQuery;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;

public class BindTest {
    public static void main(String[] args) {
        InfluxDB influxDB = InfluxDBFactory.connect("http://127.0.0.1:8086");
        String s = "SELECT LAST(*) FROM batch_assembly_monitoring WHERE last_batch_start = $lbs";
        Query query = BoundParameterQuery.QueryBuilder.newQuery(s)
                .bind("lbs", 234567890)
                .create();
        System.out.println(query.getCommand());
        QueryResult result = influxDB.query(query);
    }
}

我在标准输出上得到的输出:

SELECT LAST(*) FROM batch_assembly_monitoring WHERE last_batch_start = $lbs

InfluxDB 日志也包含以下内容:

[httpd] 172.17.0.1 - - [2020年9月24日:12:40:29 +0000]“发布 /query?params=%7B%22lbs%22%3A234567890%7D&q=SELECT+LAST%28%2A%29+FROM+batch_assemble_monitoring+WHERE+last_batch_start+%3D+%24lbs HTTP/1.1" 200 89 "-" "okhttp/4.8.1" 20fe610d-fe63-11ea-81ba-0242ac110002 271

看来绑定参数没有绑定,查询中使用了占位符字符串而不是值 234567890。

我做错了什么?

java parameters prepared-statement influxdb
2个回答
0
投票

问题是我连接后没有设置数据库:

influxDB.setDatabase("my_database");

之后就开始工作了。 InfluxDB日志仍然不包含绑定参数,只有“lbs”字符串,但参数已经传递了。


0
投票

我也遇到这个问题了。找不到数据,但是手动替换参数,执行sql就可以找到数据了。

POST http://10.6.203.108:8086/query?db=unicom_power_test&q=select+*+from+cl_device_prop+where+equip_number+%3D+%24equipNumber+and+prop_key+%3D+%24propKey&params=%7B%22equipNumber%22%3A82%2C%22propKey%22%3A%22C40002%22%2C%22second%22%3A%222024-02-26T16%3A00%3A00Z%22%7D (0-byte body)

© www.soinside.com 2019 - 2024. All rights reserved.