Search code examples
javacassandranosqlcqlcassandra-3.0

read data from cassandra using java


 My sample  cassandra table looks like        

id | article_read | last_hours | name
----+-----------------------------------
5  |    [4, 5, 6]  |          5  | shashank
10 | [12, 88, 32]  |          1  |      sam
8  |    [4, 5, 6]  |          8  |     aman
7  |       [5, 6]  |          7  |    ashif
6  |    [4, 5, 6]  |          6  |     amit
9  |    [4, 5, 6]  |          9  |  shekhar

My java code to read data from Cassandra table using cql queries,

     Scanner sc = new Scanner(System.in);
     System.out.println("enter name1 ");
     String name1 = sc.nextLine();      
     System.out.println("enter name2");
     String name2 = sc.nextLine();

     Cluster cluster =    Cluster.builder().addContactPoint("127.0.0.1").build();        
     Session session = cluster.connect("tp");

     PreparedStatement queryStmt = session.prepare("select article_read  from bat where name = ?");        
     ResultSet result1 = session.execute(queryStmt.bind(name1));

     ResultSet result2 = session.execute(queryStmt.bind(name2));
      System.out.println(result1.all());
      System.out.println(result2.all());

       if(result1.equals(result2))
      {    
      System.out.println("100% sentiment ");          
      }                
      else
      {
       System.out.println("no sentiment ");
    }    
}

look at my code ,its running but when i am putting name1,name2 shashank and aman its giving 100 % but when giving shashank and ashif result is again 100% match..


Solution

  • Use PreparedStatement

    First prepared the query only once like below :

    //Prepared only once. 
    PreparedStatement queryStmt = session.prepare("select * from bat where name = ?");
    

    Then you can use it any number of time like below :

    ResultSet result1 = session.execute(queryStmt.bind("shashank"));
    ResultSet result2 = session.execute(queryStmt.bind("aman"));
    

    Edited

    try (Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); Session session = cluster.connect("test")) {
        Scanner sc = new Scanner(System.in);
        System.out.println("enter name1 ");
        String name1 = sc.nextLine();
        System.out.println("enter name2");
        String name2 = sc.nextLine();
    
        PreparedStatement queryStmt = session.prepare("select article_read from bat where name = ?");
        ResultSet result1 = session.execute(queryStmt.bind(name1));
        ResultSet result2 = session.execute(queryStmt.bind(name2));
    
    
        if (result1.one().getList("article_read", Integer.class).equals(result2.one().getList("article_read", Integer.class))) {
            System.out.println("100% sentiment ");
        } else {
            System.out.println("no sentiment ");
        }
    }