免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3156 | 回复: 6
打印 上一主题 下一主题

[C++] C/C++下对BerkeleyDB的封装,很好用哦!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-20 11:37 |只看该作者 |倒序浏览
最近在研究BerkeleyDB,业界的评介相当高,功能确实很好很强大,就是用起来有点拗,于是就搞了下封装,感觉这样用似乎更舒服。

大家先看看使用的代码片断,如果响应热烈,我将提供给大家连接库,甚至源代码!

...
    // STEP-3: 指向数据库(一个路径)

    DbDatabase db("/tmp");
    // STEP-4: 获取表操作句柄,没有就创建

    DbTable * pt = db.getTable("employee");
    if (pt == NULL)
        pt = db.createTable("employee", 0, _fields, sizeof(_fields) / sizeof(DbField));
    // STEP-5: 存数据

    XEmployee e1 = {"Ben", 'M', 32, 8400.00, "IT system development"};
    XEmployee e2 = {"Marry", 'F', 23, 2100.00, "HR training"};
    XEmployee e3 = {"Joe", 'F', 25, 4200.00, "IT system development"};
    pt->put(&e1);
    pt->put(&e2);
    pt->put(&e3);
    // STEP-6a: 取数据 / 主键取

    XEmployee e = {"Marry"}; // 为主键字段设置值

...


完整示例代码请参阅http://www.docin.com/p-6850112.html

论坛徽章:
0
2 [报告]
发表于 2009-01-20 12:17 |只看该作者
bdb最大的问题是,当XEmployee结构发生变化后,似乎不能再用原有的数据了吧?
这个比较不爽。

论坛徽章:
0
3 [报告]
发表于 2009-01-20 12:20 |只看该作者
难道 bdb 自己没封装?api_cxx 干什么用的?

论坛徽章:
0
4 [报告]
发表于 2009-01-20 12:23 |只看该作者
原帖由 langue 于 2009-1-20 12:20 发表
难道 bdb 自己没封装?api_cxx 干什么用的?



表总打击嘛


搭个便车,“bdb最大的问题是,当XEmployee结构发生变化后,似乎不能再用原有的数据了吧?
这个比较不爽。”
是不是这个回事?

论坛徽章:
0
5 [报告]
发表于 2009-01-20 12:29 |只看该作者
原帖由 cofish 于 2009-1-20 12:23 发表



表总打击嘛


哈哈,也是,不过也不能只许赞扬不许批评嘛 :wink:
我只是觉得写代码没必要搞得这么希奇,有能力的多写点,没能力就少写点。
除非点它一次链接能赚几分钱

论坛徽章:
0
6 [报告]
发表于 2009-01-20 15:34 |只看该作者
感谢同仁的批评指正!!!

最近刚注册了一个叫豆丁的网,觉得他们的商业模式不错,所以发这个贴的时候顺便玩了一下,把链接转过去而没有直接加附件,抱歉!

另外,法师说的bdb提供api_cxx就够用了,我是不赞同的,api_cxx还是原始的接口,如果拼存放到库中的记录、索引,如何加次索引等等还是要做很多工作的,也不直观!尤其对那些结构里有char *类型的,更加繁琐一些!

我封装的接口至少让使用者可以像E-SQL那样来使用BDB,不必关心太多原理性的内容,代码写起来也清晰一些吧?

另:附上完整的示例代码,大家不用点链接了 dbop_t1.rar (1.24 KB, 下载次数: 74)

论坛徽章:
0
7 [报告]
发表于 2009-01-20 16:22 |只看该作者
缺少dbop_cxx.h文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP