我已经开始使用C++ libcql
Cassandra 库了。我正在尝试使用 C++ 和 libcql 库从 Cassandra 检索数据。
每当我使用命令行cqlsh
并像这样选择时-
select records from profile_user where user_id = '1';
我总是在 cql 命令行上得到以下输出,其中records
列实际上是 amap
其中 key ise1
和 value is HELLO
。以同样的方式键e2
和值HELLO
再次.. 当我在 CQL 中创建表时,我创建了记录作为映射,因为我正在使用 CQL 的集合功能..
records
--------------------------------
{'e1': 'HELLO', 'e2': 'HELLO'}
现在来到 C++ 世界-
现在我正在尝试从...中检索相同的内容C++ libcql library
...我将在 C++ 中运行与上面相同的选择查询,并且我想返回一个映射,它将具有e1, e2 as the key
和HELLO as there value inside that map
...可以在 C++ 中执行吗?
/**
* This method will retrieve the data from Cassandra..
* And then call print_rows method to print it out on the console
*/
void get_attributes(string id){
try{
// some code
//Connection open
connection_open();
execute_query("USE testks;");
//this will give me the result back of the select query
cql_result_t& result = execute_query("select * from profile_user where key ='"+id+"';");
// and this is printing it out on the console
print_rows(result);
// some code
} catch (int e){
// some code here
}
}
以下是运行我的 C++ 程序后将在控制台上打印结果的方法 -
/**
* This method prints out the result on the console.. *
*
*/
void print_rows(cql::cql_result_t& result) {
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);
std::cout.write(reinterpret_cast<char*>(data), size);
std::cout << " | ";
}
std::cout << std::endl;
}
}
运行上面的 C++ 程序后,我在控制台上看到的结果是这样的 -
e1HELLOe2HELLO |
但我正在寻找的是 -将结果存储在 C++ 中的 Map 中,这样键应该e1 and e2
在 Map 中......并且它们的值应该HELLO
在同一个 Map 中......然后迭代 Map并用 C++ 打印出结果?这可能与我拥有的当前代码有关吗?
如果是,任何人都可以提供一个简单的例子吗?谢谢...
我猜这基本上是一个 C++ 问题。只需检索数据并将其放入地图中...但我面临的问题是我的背景完全是 Java,所以很难弄清楚如何做到这一点。 ..