使用datastax java驱动程序绑定where子句中的数据

时间:2014-12-11 20:51:19

标签: cassandra datastax datastax-java-driver

我知道有人问过这个问题(http://www.datastax.com/support-forums/topic/java-driver-cql-3-bound-statements-in-clause#post-13114Prepared Statement with collection in IN clause in Datastax Cassandra CQL driver

但是,我仍然不知道如何绑定数据。 例如,我的preparedStatement是

select * from cf where key in (?)

我想要的是绑定数据,而cql看起来像

select * from cf where key in ('key1', 'key2')

现在我有一个boundStatement。

当我使用boundStatment.bind()api时。我试着绑定?但是,使用List或Array,它会说:

  

列值的类型为varchar,不能设置为列表

好的,我设置了一个字符串并使用了boundStatement.bind,如下所示:

boundStatement.bind("'key1','key2'");

没有异常,但resultSet为空。为什么?我认为因为驱动程序将其解析为

select * from cf where key in (''key1', 'key2'')

(注意多余的引用,因为它认为所有"' key1'和' key2'"是一个字符串)。

所以,我知道datastax在子句中有支持。但是我找不到一些例子..

能帮到我吗? 谢谢!

1 个答案:

答案 0 :(得分:4)

正确的语法是:

SELECT * FROM cf WHERE key IN ?

这将允许您为查询参数绑定List。