Этот простейший пример, сделаный мной в попытке
разобраться с сабжем - не работает :( Как заставить?
Проблема ИМХО в том, что я неправильно считываю данные из БД,
однако этот пример практически содран из букваря,
и я не знаю что можно предпринять :(
Утилиты показывают, после любого количества выполнений
этой проги в бд есть 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)
- Форум Ошибка исполнения, corruption of the heap (2010)
- Форум С++ Проверка доступа в интернет с помощью библиотеки curl (2013)
- Форум Класс для работы с очередью (2005)
- Форум [g++] dynamic_cast возвращает 0x4, а не 0 — неужели баг? (2009)
- Форум Ошибка при компиляции (2015)
- Форум Вызов управляемого метода .NET из неуправляемого (2021)
- Форум C++ и исключение abi::__forced_unwind (2017)
- Форум Linux + pthread глюки (2008)