Этот простейший пример, сделаный мной в попытке разобраться с сабжем - не работает :( Как заставить? Проблема ИМХО в том, что я неправильно считываю данные из БД, однако этот пример практически содран из букваря, и я не знаю что можно предпринять :( Утилиты показывают, после любого количества выполнений этой проги в бд есть 1 запись, но считать её не получается :( Вывод программы: put returns 0 get returns 0 result is: 0 result size is: 0 сам исходник: #include <db4/db_cxx.h> int main (int argc, char * argv []) { try { Db vDb (NULL, 0); Dbt key, data; vDb.open ( NULL, "test.db", NULL, DB_HASH, DB_CREATE, 0 ); // writing here key.set_flags (DB_DBT_USERMEM); data.set_flags (DB_DBT_USERMEM); key.set_data ((void *) "TESTKEY"); key.set_ulen (8); data.set_data ((void *) "TESTDATA"); data.set_ulen (9); std::cout << "put returns " << vDb.put (NULL, &key, &data, 0) << "\n"; vDb.close (0); // reading here Db vb (NULL, 0); vb.open ( NULL, "test.db", NULL, DB_HASH, DB_CREATE, 0 ); Dbt rdata, rkey; rkey.set_flags (DB_DBT_USERMEM); rkey.set_data ((void *) "TESTKEY"); rkey.set_ulen (8); std::cout << "get returns " << vb.get (NULL, &rkey, &rdata, 0) << "\n"; std::cout << "result is: " << rdata.get_data () << "\n"; std::cout << "result size is: " << rdata.get_ulen () << "\n"; vb.close (0); } catch (DbException &dbe) { std::cout << "exception caught: " << dbe.what() << "\n"; std::cerr << "exception caught: " << dbe.what() << "\n"; } return 0; }
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум berkeley db (2006)
- Форум Продолжим про исключения!! (2007)
- Форум С++ Проверка доступа в интернет с помощью библиотеки curl (2013)
- Форум Класс для работы с очередью (2005)
- Форум [g++] dynamic_cast возвращает 0x4, а не 0 — неужели баг? (2009)
- Форум Ошибка при компиляции (2015)
- Форум Вызов управляемого метода .NET из неуправляемого (2021)
- Форум C++ и исключение abi::__forced_unwind (2017)
- Форум Linux + pthread глюки (2008)
- Форум Boost.Asio и несколько async_write/async_read за раз (2023)