использовать драйвер java datastax для привязки данных для пункта where in

Я знаю, что кто-то задавал этот вопрос (http://www.datastax.com/support-forums/topic/java-driver-cql-3-bound-statements-in-clause#post-13114, Подготовленный оператор со сбором в предложении IN в драйвере Datastax Cassandra CQL)

Однако я до сих пор не знаю, как привязать данные. например, мое подготовленное заявление

select * from cf where key in (?)

Я хочу привязать данные, а cql выглядит как

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

Теперь у меня есть связанное заявление.

когда я использую boundStatment.bind () api. Пытаюсь привязать? со списком или массивом, однако, он говорит:

Значение столбца имеет тип varchar, не может быть установлено в список

Хорошо, я установил строку и использую boundStatement.bind вот так:

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

Нет никаких исключений, но resultSet пуст. Почему? Я думаю, потому что драйвер разбирает это как

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

(обратите внимание на повторяющуюся цитату, потому что она считает, что все «ключ1» и «ключ2» являются строкой).

Итак, я знаю, что в статье есть поддержка datastax. но я не могу найти несколько примеров ..

Кто-нибудь может мне помочь? Спасибо!


person jixuan1989    schedule 11.12.2014    source источник


Ответы (1)


Правильный синтаксис:

SELECT * FROM cf WHERE key IN ?

Это позволит вам привязать список к параметру запроса.

person Tyler Hobbs    schedule 12.12.2014