есть такой код:
Db berk(NULL,0);
if (berk.open(NULL,"/tmp/mybase.db",NULL,DB_BTREE,DB_CREATE,0))
std::cout << "error opening" << std::endl;
char * c_data ="fun";
int i_key = 777;
Dbt key(&i_key,sizeof(i_key)),
data(c_data,sizeof(char) * (strlen(c_data)+1));
if (berk.put(NULL,&key,&data,NULL)!=0)
std::cout << "error putting" << std::endl;
if (berk.sync(NULL)!=0)
std::cout << "error sync" << std::endl;
if (berk.close(NULL)!=0)
std::cout << "error close" << std::endl;
Db berk2(NULL,0);
if (berk2.open(NULL,"/tmp/mybase.db",NULL,DB_BTREE,NULL,0))
std::cout << "error opening" << std::endl;
c_data = "nuf";
Dbt key_r, data_r;
key_r.set_data(&i_key);
key_r.set_ulen(sizeof(i_key));
int res;
try {
res =berk2.get(NULL,&key_r,&data_r,0);
} catch (DbException &e) {
std::cout << "except " <<e.what() << std::endl;
}
if (res == DB_NOTFOUND)
std::cout << "error getting" << std::endl;
else {
c_data = (char *) data_r.get_data();
std::cout << "value: " <<c_data <<std::endl;
}
berk2.close(NULL);
этот код всегда возвращает "error getting". Почему?
ps сори за пред. пост =)