berkeley db简单使用-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1235529
  • 博文数量: 76
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 2689
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 12:07
个人简介

樽中酒不空

文章分类

全部博文(76)

文章存档

2020年(4)

2019年(1)

2017年(2)

2016年(2)

2015年(7)

2014年(11)

2013年(13)

2012年(18)

2011年(2)

2010年(16)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2017-07-24 17:18:18


最近要使用一个嵌入式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) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图