read data from cassandra using java

≡放荡痞女 提交于 2019-12-11 07:28:28

问题


 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..


回答1:


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 ");
    }
}


来源:https://stackoverflow.com/questions/47030798/read-data-from-cassandra-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!