Я начал работать с C++ libcql
библиотеки для Кассандры .. Я пытаюсь получить данные из Cassandra с помощью C++ с libcql библиотеки ..Как сохранить результат на карте в C++, а затем перебрать его, а затем распечатать результат?
Всякий раз, когда я иду в командной строке с помощью cqlsh
и сделать выбор, как это -
select record_name, record_value from profile_user where user_id = '1';
Я всегда получаю нижний вывод в командной строке cql и в котором record_name
и record_value на самом деле столбец TEXT datatype which is UTF-8 encoded string
.
record_name | record_value
-------------+--------------
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++ программа что-то вроде это -
e1 | hello |
e2 | hello |
Но то, что я ищу, - магазин результат в карте в C++, таким образом, что ключ должен быть e1 and e2
на карте .. И значение для них должно быть HELLO
на той же карте ... И затем перебрать карту и распечатать результат на C++? Возможно ли это с текущим кодом, который у меня есть?
Если да, может ли кто-нибудь предоставить простой пример по этому вопросу? Спасибо ...
Это, по сути, вопрос на C++, я думаю .. Просто извлеките данные и поместите их в карту ... Но проблема, с которой я столкнулся, - это мой фон полностью в Java, поэтому с небольшим трудным временем чтобы выяснить, как это сделать ...
я слегка изменил свой дизайн таблицы в этом вопросе к моему первоначальному вопросу here вместо использования коллекции, теперь я использую составные ключи ..
Но если я могу выясните решение моего предыдущего вопроса, тогда я пойду с этим подходом, иначе я пойду с этим подходом.
Спасибо за помощь ...
Update Код: -
С ниже изменения, всегда распечатать первый результат в два раза? Не знаете почему?
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 << " | ";
if(!flag) {
key = reinterpret_cast<char*>(data);
flag = true;
} else if(flag) {
value = reinterpret_cast<char*>(data);
m[key] = value;
flag = false;
}
}
std:map<std::string, std::string>::const_iterator it = m.begin();
for (;it!=m.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
std::cout << std::endl;
}
}
e1 : hello
e1 : hello
e2 : hello
Есть ли что-то не так, что я здесь делаю?
Моя единственная проблема заключается в том, как вытащить результат, поступающий на print_rows, в std :: map или unorderedmap в зависимости от того, что эффективнее, а затем повторить его и распечатать результаты. !! – ferhan
Возможный дубликат [Сохранить результат на карте в C++, а затем повторить его, а затем распечатать?] (Http://stackoverflow.com/questions/19341994/store-the-result-in-a-map-in- c-and-then-iterate-it-and-then-print-out) – Raedwald