Cassandra Prepared Statement - 绑定参数两次
Cassandra Prepared Statement - Binding Parameters Twice
我有一个要执行的 cql 查询。 cql 字符串如下所示:
SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;
我的应用程序在 datastax 驱动程序之上有两层抽象。在一层中我想绑定前两个参数,在另一层中我想绑定最后一个参数。
问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的 BoundStatement。我错过了什么吗?可以吗?
我们使用的是 datastax 驱动程序版本 2.0.3。
谢谢,
阿纳托利.
您应该能够使用 boundStatement.setXXXX(index,value) 将任意数量的参数绑定到 BoundStatement,如下所示:
BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);
但问题是您正在尝试使用动态列族,其值随您要绑定的值而变化。
据我所知,这是不允许的,因此您应该为每个 table 准备一个语句,然后使用正确的绑定语句。
我有一个要执行的 cql 查询。 cql 字符串如下所示:
SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;
我的应用程序在 datastax 驱动程序之上有两层抽象。在一层中我想绑定前两个参数,在另一层中我想绑定最后一个参数。 问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的 BoundStatement。我错过了什么吗?可以吗?
我们使用的是 datastax 驱动程序版本 2.0.3。
谢谢, 阿纳托利.
您应该能够使用 boundStatement.setXXXX(index,value) 将任意数量的参数绑定到 BoundStatement,如下所示:
BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);
但问题是您正在尝试使用动态列族,其值随您要绑定的值而变化。 据我所知,这是不允许的,因此您应该为每个 table 准备一个语句,然后使用正确的绑定语句。