最近要使用一个嵌入式key value的数据库,最初选择是level db。不过在windows下编译非常麻烦,所以另外选择了berkeley db。使用也非常简单,可以从源码编译,也可以安装官方的安装版,然后copy出.h,.lib和.dll集成到自己程序中使用。本文使用的版本是5.3,使用到的文件如下:
libdb53.lib
libdb_sql53.lib
libdb_stl53.lib
libdb53.dll
还有include目录整个拿来。
目前简单测试了两个功能:key value的读写, 二进制的读写。
其实这两种用法很接近:
int cdbmgr::putstring(const char* key, const char* value)
{
dbt dbkey((char*)key, strlen(key) 1);
dbt dbvalue((char*)value, strlen(value) 1);
int ret = m_pdb->put(0, &dbkey, &dbvalue, db_nooverwrite);
if (ret == db_keyexist)
{
return 1;
}
return 0;
}
int cdbmgr::putblob(const char* key, const unsigned char* data, int len)
{
dbt dbkey((char*)key, strlen(key) 1);
dbt dbvalue((unsigned char*)data, len);
int ret = m_pdb->put(0, &dbkey, &dbvalue, db_nooverwrite);
if (ret == db_keyexist)
{
return 1;
}
m_pdb->sync(0);
return 0;
}
主要区别应该就是二进制多了个长度吧。
简单做了封装,代码在:
vc2010工程,把代码放到vc2008或以上版本应该都可以。
可能会碰到一个问题,提示某个宏已经定义,我这边的方案是修改系统文件的宏,不要改bdb .h的,除非自己重编译。
阅读(6089) | 评论(0) | 转发(0) |