You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cassandra.apache.org by wateray <wa...@163.com> on 2014/09/11 09:56:30 UTC

I got a solution//Re:how to bound in parameters with cql?

    While inquire for sql, how to solve this problem I have found this. And it works.


     StringBuilder sb = new StringBuilder();
sb.append("select * from t_calllog where sds_uid=? and globalid in( ");


for (int i = 0; i < limit; i++) {
   if (i != 0) {
sb.append(",");
   }


   sb.append("?");
}
sb.append(" )");


statement = session.prepare(sb.toString());


//Then bound 


     BoundStatement bs = new BoundStatement(statement);


bs.setString(0, callLog.getSds_uid());


Row row = null;
for (int i = 1; i <= limit; i++) {
bs.setString(i, "value");
}



Are there any better solution? If have please let me know, thanks!


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2014-09-10 08:11:42,"wateray" <wa...@163.com> :

Hi all.


   I have a select like this:
      PrepareStatemet ps =  session.prepare("SELECT * FROM my_table where id in (?)");


  Then how to bound this parameter?


 I try to the following 2 method. But it didn't work. 
1. when do this, it doesn't work, nothing was selected.
   String ids = "  'id1', 'id2', 'id3' ";
   ps.bind(ids);
   
2. 
   Set<String> ids = new HashSet<String>();
   ids.add("id1");
   ids.add("id2");
  ids.add("id3");
 
   ps.bind(ids);  // error,it say the id is not HashSet type inconsistent.


Then how can I do? 


Thanks!