Berkeley DB (BDB) C语言简单示例

本文提供了一个简单的Berkeley DB(BDB)C语言示例,帮助理解如何在C程序中使用BDB进行数据存储。
摘要由CSDN通过智能技术生成
Berkeley DB 是嵌入式数据库系统,简单,高效。
虽然使用上个人感觉没有sqllite那么简单方便,但是从效率上来说sqllite是无法和BDB相比的。
BDB根据使用者的设置可以设置成tree型,queue型等,每种有每种不同的特点和优势。
深入研究的同学可去官网研究手册,本文仅是给入门者一个简单的hello world介绍。
本文的程序是从几年前代码里抽出来的,具体新版本是否有新函数代替是否有建议废弃的函数没有调查过,事先声明。
例子
main.c
/**
* @file tt_bdb.c
* @brief Simple example of BDB (QUEUE type)
* @author cjx
* @version 
* @date 
*/
#include <string.h>
#include <stdlib.h>
#include "tt_bdb.h"

#define COMMAND_MAX_SIZE     256
#define DB_FILENAME_MAX_SIZE 256

#define DB_NAME "my_db"

DB_ENV *myEnv;     /* Env structure handle */
DB *dbp;

inline void init_DBT(DBT *key, DBT *data)
{
    memset(key, 0, sizeof(DBT));
    memset(data, 0, sizeof(DBT));
}   

/**
* @brief Set the env content
*
* @return OK:0 / NG:other
*/
static int init_bdb_env(const char *db_path)
{
    int ret = db_env_create(&myEnv, 0);
    if (ret != 0) {
        return 1;
    }

    u_int32_t g = 0;                // The size of the cache is set to gbytes gigabytes plus bytes
    u_int32_t b = 32 * 1024;        // The size of the cache is set to gbytes gigabytes plus bytes
    int n = 1;                      // The ncache parameter is the number of caches to create
    if (myEnv->set_cachesize(myEnv, g, b, n) != 0) {
        return 1;
    }

    u_int32_t env_flags = DB_CREATE|DB_INIT_MPOOL|DB_INIT_TXN|DB_REGISTER|DB_RECOVER;
    if (myEnv->open(myEnv, db_path, env_flags, 0) != 0) {
        return 1;
    }

    if (myEnv->get_cach
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值