Cassandra准备了语句-绑定参数两次
我想执行一个cql查询。cql字符串如下所示:Cassandra准备了语句-绑定参数两次,cassandra,cql,datastax,datastax-java-driver,Cassandra,Cql,Datastax,Datastax Java Driver,我想执行一个cql查询。cql字符串如下所示: SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id; SELECT*FROM:columnFamilyName其中=:name和=:id; 我的应用程序在datastax驱动程序之上有两层抽象。在一个层中,我想绑定前两个参数,在另一个层中,我想绑定最后一个参数。 问题是,如果我绑定前两个参数,就会得到一个
SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;
SELECT*FROM:columnFamilyName其中=:name和=:id;
我的应用程序在datastax驱动程序之上有两层抽象。在一个层中,我想绑定前两个参数,在另一个层中,我想绑定最后一个参数。
问题是,如果我绑定前两个参数,就会得到一个BoundStatement,而我不能绑定另一个参数。我错过什么了吗?能做到吗
我们使用的是datastax驱动程序版本2.0.3
谢谢,
Anatoly。您应该能够使用BoundStatement.setXXXX(索引,值)将任意数量的参数绑定到BoundStatement,如下所示:
BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);
但问题是,您试图使用一个动态列族,其值随要绑定的值而变化。
据我所知,这是不允许的,所以你应该为每个表准备一条语句,然后使用右键语句。谢谢,我会试试。关于你的最后一条评论,你能给我指一下文档页面吗?请看本页底部Olivier Michallat的回答:仅供参考,他是Datastax Java驱动程序开发人员之一。