0

...を使用してCassandraからデータを取得しようとしています.CassandralibCQL library in C++で作成したテーブルは次のようなものです-

create table test_cql (user_id text, column_name text, column_value blob, primary key (id, column_name));

以下は、上記の表にあるデータです-

cqlsh:testks> select column_name, column_value from test_cql where user_id = '1';

 column_name              | column_value
--------------------------+--------------------------------------------------------------------------------------------
 @hello.1381780131229.dc1 | 0x7fff0000012c4ebb95550000001e42797465204172726179205465737420466f722042696720456e6469616e

ここで column_value は、取得しようとしている実際のブロブ値です...

以下は、Cassandra からデータを取得しようとする C++ コードで、user_id = 1column_name と column_value の詳細を出力しようとしています。

    bool flag = false;
    std::map<std::string, std::string> m;
    std::string key, value;

    string query = "select column_name, column_value from test_cql where user_id ='1';";
    std::cout << query << endl;

// the below line will execute the query
    cql_result_t& result = execute_query(query);

// this will print out the result after executing the above query

    while (result.next()) {
        for (size_t i = 0; i < result.column_count(); ++i) {
            cql::cql_byte_t* data = NULL;
            cql::cql_int_t size = 0;
            result.get_data(i, &data, size);

            if (!flag) {
                key = reinterpret_cast<char*>(data);
                flag = true;
            } else if (flag) {
                value = reinterpret_cast<char*>(data);
                m[key] = value;
                flag = false;
            }
        }

        cout<<key << "-" << value <<endl;

    }

上記のコード@hello.1381780131229.dc1は、何らかの形で値ではなくキーのみを出力します。0x7fff0000012c4ebb95550000001e42797465204172726179205465737420466f722042696720456e6469616e値は column_value である Cassandra テーブルのバイト配列 (バイナリ blob) であるため、値を出力する必要があります。

そして、キーと値の両方を文字列として宣言しましたが、これは上記のコードで推測する問題である可能性があります..バイト配列) 上記の C++ コードを使用していますか?

また、このバイナリ バイト配列 blob 値は任意の可変長にすることができ、常に BIG-ENDIAN バイト オーダー形式で格納されます。

Javaのバックグラウンドから来て、私は少し問題を抱えています...これについて何か助けていただければ幸いです...私が推測するように、バイナリバイト配列を表すためにどのデータ型を使用する必要があるかなど、完全にC++の質問です..

4

1 に答える 1