2017-02-05 2 views
0

私は雲の上でcassandraデータベースを実行しています。私はcassandra Dbを照会するためのRest Webサービスを作成しました。私は、次の自分のWebサービスのUIにjavaの値をQuery cassnadraデータベースに渡す方法

を使用する人のユーザからの入力をしたい、私は実行コードです:クエリはを通じて何度も実行されることを意図されている場合、一般的に

public String cql2(int psa) 
    { 
     Cluster.Builder clusterBuilder = Cluster.builder() 
       .addContactPoints("52.36.24.246").withPort(9042) 
       .withQueryOptions(new QueryOptions().setFetchSize(2000)) 
       .withCredentials("username", "password"); 
     Session session = clusterBuilder.build().connect(); 
     String cqlStatement = "SELECT * FROM godfather.crime WHERE   psa='"+psa+"' ALLOW FILTERING"; 
     for (Row row : session.execute(cqlStatement)) 
     { 
      cql=(row.toString()); 
     } 
     return cql; 
    } 
} 
+0

Prepared statements in the Java driver for Cassandraに記載されていカサンドラでこのWikipedia article

  • プリペアドステートメントに準備された文の利点についての詳細を読むことができます。申し訳ありません。 –

  • 答えて

    2

    アプリケーションの寿命(パラメータの有無にかかわらず)、プリペアドステートメントが最適なソリューションです。

    基本的にはあなたのコードでは、なります:

    public class MyService { 
        private Cluster cluster; 
        private Session session; 
        private PreparedStatement query; 
    
        // exception handling not included to keep the code short 
        public void init() { 
         cluster = Cluster.builder() 
          .addContactPoints("52.36.24.246").withPort(9042) 
          .withQueryOptions(new QueryOptions().setFetchSize(2000)) 
          .withCredentials("username", "password") 
          .build(); 
         session = cluster.connect(); 
         query = session.prepare("SELECT * FROM godfather.crime WHERE psa= ?"); 
        } 
    
        public String execQuery(int psa) { 
         for(Row r : session.execute(prepared.bind(psa))) { 
          // your processing here 
         } 
        } 
    

    }

    詳細のカップル:

    1. 一度だけ、アプリケーションごとClusterSessionを初期化することをお勧めします。これらは長い間生き残っておくべきオブジェクトです。
    2. 文を一度だけ準備することをお勧めします。
    3. 例外処理、初期化などの項目は、上記のコードには含まれていません。

    あなたはについての書類を作成の詳細を知りたい場合:

    1. カサンドラ、他のデータベースとして、準備された文をサポートしています。あなたはここにコードフォーマット中bimistakelyでタイプされたを入力してください非常によく
    関連する問題