使用java从cassandra读取数据

时间:2017-10-31 08:22:49

标签: java nosql cql cassandra-3.0

 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表中读取数据,

     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%匹配..

1 个答案:

答案 0 :(得分:2)

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