0

cassandra-jdbc ドライバーで CQL 構文を使用する....これは機能しません。空の文字列を取得するだけです。

      PreparedStatement pstmt = conn.prepareStatement("select * from myCF");
      ResultSet rset = pstmt.executeQuery();
      ResultSetMetaData rsmd = rset.getMetaData();
      int cols = rsmd.getColumnCount();
      pset.next();
      print rsmd.getColumnName(0);
      print pset.getString(0);
      ...   

どうやら行ごとに unwrap などを使用する必要があるようです...列名がわからない場合は、完全な例を投稿してください。

4

1 に答える 1

1

OKこれがうまくいったことです:

    ResultSet res = pstmt.executeQuery();
    CassandraResultSet crs = res.unwrap(CassandraResultSet.class);
    crs.next() ;
    ResultSetMetaData rsmd = crs.getMetaData();
        cols = rsmd.getColumnCount();
        for(int i=1 ; i <= cols ; i++) {
          String colNm = rsmd.getColumnName(i);
          String colVal = null;
          String colType = rsmd.getColumnTypeName(i);
          if (colType.equals("JdbcLong")) {
              colVal = "" + crs.getLong(i);
          } else if (colType.equals("JdbcInteger")) {
              colVal = "" + crs.getInt(i);
          } else {
              colVal = crs.getString(i);

キー、列名、および値を適切に表示するには、次のように列ファミリーを定義する必要があることに注意してください。

NOTE: you wont be able to understand your column names and values unless
you set the Cassandra Type hints via cassandra-cli.  To have a schema like below
where all un-referenced column types are UTF8Type:
   CREATE COLUMN FAMILY  MyColFam  WITH key_validation_class=UTF8Type
     AND default_validation_class=UTF8Type AND comparator=UTF8Type
     AND column_metadata = [ 
          {column_name: an_integer_column, validation_class: IntegerType}
         {column_name: a_long_column,     validation_class: LongType}
     ];
于 2012-05-10T20:09:32.693 に答える