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];
