热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

Berkeley DB使用简介 2

来源: 作者: 时间:2007-12-02 Tag: 点击:

5        C++API介绍

经常用的类有5个

1.         DbEnv:环境类,主要用于设置BDB是否需要日志、是否需要锁等信息;提供打开、关闭等操作

2.         Db:DB类,用户操作数据,提供打开、关闭、查找、删除、同步等操作

3.         Dbt:数据类,向Db中存入、取出数据都需要使用这个类。

4.         DbException及其子类:异常类

5.         Dbc:游标类,当对数据库中多组数据进行操作时使用

#include <db_cxx.h>

#include <string>

#include <iostream>

using namespace std;

DbEnv *g_env = NULL;

Db *g_db = NULL;

void closeEnv()

{

    try

    {

        if(g_db)

        {

            g_db->close(0);

            delete g_db;

            g_db = NULL;

        }

        if(g_env)

        {

            g_env->close(0);

            delete g_env;

            g_env = NULL;

        }

    }

    catch(...)

    {

    }

}

int main()

{

    //环境目录,日志文件将创建在这个目录下

    string strEnvHome = "./db/";

    //创建DB|初始化日志

    unsigned int nEnvFlags = DB_CREATE | DB_INIT_LOG | DB_INIT_MPOOL;  

  

    //db文件名

    string strDbFileName = get_current_dir_name();

    strDbFileName += "/db/datafile";  

  

    try

    {

        g_env = new DbEnv(0);

        g_env->set_error_stream(&std::cerr);

        g_env->set_cachesize(0, 10 * 1024 * 1024, 1);

        //打开环境

        g_env->open(strEnvHome.c_str(), nEnvFlags, 0);

      

        g_db = new Db(g_env, 0);

        g_db->set_error_stream(&std::cerr);

        //用B树的结构打开数据库,如果不存在则创建

        g_db->open(NULL, strDbFileName.c_str(), NULL, DB_BTREE, DB_CREATE, 0);

    }

    catch(DbException& e)

    {

        cout<<"打开数据库出错:"<<e.what()<<endl;

        closeEnv();

        return -1;

    }

  

    Dbt key, data;

    char sKey[1024], sData[1024];

  



相关文章:
SQLite3 C/C++ 开发接口简介(API函数) 二
SQLite3 使用教学
Scaling out MySQL - Hardware today and tomorro
SQLite适用的范围
sybase cursor declare
SQL语句大全精要
用户配额
decode函数
Oracle 数据库创建表空间、创建用户指定表空间
MySQL教会我使用GnuPG验证软件包
MySQL中MyISAM引擎与InnoDB引擎性能简单测试
initdb
mysqladmin在线帮助文档
CentOS 4.7 安装Oracle 9.2.0.4的一些问题
文本如何导入oracle(sqlldr 的用法)
ORA-00600: 内部错误代码,自变量: [16201], [],
分布式Oracle的database link
install a MySQL source distribution
Mysql备份脚本(未验证)
oracle 9.2.0.1 update 9.2.0.5
每小时Dump所有mysql数据库到NAS存储设备上
Oracle SCN机制解析
Account LOCKED(TIMED)
MySQL数据库5.0的my.cnf配置选项
oracle存储过程中调用其他用户的表
修改sqlplus提示符
MYSQL建表实例
一些对Mysql DBA有用的脚本
Oracle DBA 强悍挑战OS 64位 Solaris 10-真正休
[Bugzilla]由Mysql迁移到Oracle的方法