anatolyr
anatolyr

Reputation: 217

Cassandra Prepared Statement - Binding Parameters Twice

I have a cql query I want to preform. The cql string looks like this:

SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;

My application has two layers of abstraction above the datastax driver. In one layer I want to bind the first two parameters and in another layer I'd like to bind the last parameter. The problem is, if I bind the first two parameters, I get a BoundStatement to which I cannot bind another parameter. Am I missing something? Can it be done?

We're using datastax driver version 2.0.3.

Thanks, Anatoly.

Upvotes: 3

Views: 2534

Answers (1)

Alexander DEJANOVSKI
Alexander DEJANOVSKI

Reputation: 314

You should be able to bind any number of parameters to your BoundStatement using boundStatement.setXXXX(index,value) as follows :

BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);

The problem though is that you're trying to use a dynamic column family whose value changes with the value you want to bind. As far as I know, this is not allowed so you should instead prepare one statement per table and then use the right bound statement.

Upvotes: 3

Related Questions