Passing parameter to Cassandra CQL query using DataStax client

Saurabh Deshpande picture Saurabh Deshpande · Jul 2, 2013 · Viewed 12.6k times · Source

I am using datastax as a client for connecting to cassandra. I have successfully connected to cassandra cluster/keyspace/column families through Java. I am trying, firing some queries on cassandra column family thriugh java. For me it is working for simple queries like

ResultSet results = session.execute("select * from demodb.customer where id = 1");

Now I want to take id parameter from user and pass it to session.execute(); statement. How should I go about it?

Answer

Lyuben Todorov picture Lyuben Todorov · Jul 2, 2013

Here is a code example of inserting data about an image using a prepared statements.

PreparedStatement statement = getSession().prepare(
                               "INSERT INTO pixelstore.image " +
                               "(image_name, " +
                               " upload_time, " + 
                               " upload_by, " + 
                               " file_type, " + 
                               " file_size" +
                               ") VALUES (?, ?, ?, ?, ?);"); 

// create the bound statement and initialise it with your prepared statement
BoundStatement boundStatement = new BoundStatement(statement);

session.execute( // this is where the query is executed
  boundStatement.bind( // here you are binding the 'boundStatement'
    "background", TimeUtil.getTimeUUID(),  "lyubent", "png", "130527"));

There have been two recent blog posts on planet cassandra with a demo of what the driver can do, they contain code examples so check them out:

  1. Materialized View with Cassandra and DataStax Java Driver
  2. Small Java Application using DataStax Java Driver and Cassandra 1.2 working