使用 java 从 cassandra 读取数据

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

我的 java 使用 cql 查询从 Cassandra table 读取数据的代码,

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

看看我的代码,它 运行 但是当我输入 name1、name2 shashank 和 aman 时它给出 100% 但是当给出 shashank 和 ashif 结果再次是 100% 匹配..

使用PreparedStatement

首先只准备一次查询,如下所示:

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

然后您可以像下面这样任意多次使用它:

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

已编辑

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