Berkeley DB怎么在单个文件里创建多个表的例子
来自:http://blog.vckbase.com/BastEt/archive/2009/08/18/38140.htmlint main(int argc,char *argv[])
{
DB_ENV *dbenv;
int ret = db_env_create(&dbenv, 0);
dbenv->set_cachesize(dbenv, 0, 5 * 1024 * 1024, 0);
ret = dbenv->open(dbenv, "d:\\test\\", DB_CREATE|DB_INIT_LOG| DB_INIT_MPOOL, 0);
{
DB *dbp1=NULL;
ret = db_create(&dbp1, dbenv, 0);
int flags = DB_CREATE;
ret = dbp1->open(dbp1, NULL, "kingstock.db", "test1", DB_BTREE, flags, 0);
dbp1->close(dbp1,0);
}
{
DB *dbp2=NULL;
ret = db_create(&dbp2, dbenv, 0);
int flags = DB_CREATE;
ret = dbp2->open(dbp2, NULL, "kingstock.db", "test2", DB_BTREE, flags, 0);
dbp2->close(dbp2,0);
}
dbenv->close(dbenv,0);
return 0;
}
Berkeley DB怎么在单个文件里创建多个表的例子
#include <sys/types.h>#include <errno.h>
#include <iostream>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"libdb47.lib")
#include <db.h>
int main(int argc,char *argv[])
{
DB_ENV *dbenv;
int ret = db_env_create(&dbenv, 0);
dbenv->set_cachesize(dbenv, 0, 5 * 1024 * 1024, 0);
ret = dbenv->open(dbenv, "d:\\test\\", DB_CREATE|DB_INIT_LOG| DB_INIT_MPOOL, 0);
{
DB *dbp1=NULL;
ret = db_create(&dbp1, dbenv, 0);
int flags = DB_CREATE;
ret = dbp1->open(dbp1, NULL, "kingstock.db", "test1", DB_BTREE, flags, 0);
for(int i=0;i<40960;i++)
{
DBT key, data;
memset(&key,0,sizeof(key));
memset(&data,0,sizeof(data));
key.data=&i;
key.size=4;
data.data=&i;
data.size=4;
dbp1->put(dbp1,NULL,&key,&data,NULL);
}
dbp1->close(dbp1,0);
}
{
DB *dbp2=NULL;
ret = db_create(&dbp2, dbenv, 0);
int flags = DB_CREATE;
ret = dbp2->open(dbp2, NULL, "kingstock.db", "test2", DB_BTREE, flags, 0);
for(int i=0;i<40960;i++)
{
DBT key, data;
memset(&key,0,sizeof(key));
memset(&data,0,sizeof(data));
key.data=&i;
key.size=4;
data.data=&i;
data.size=4;
dbp2->put(dbp2,NULL,&key,&data,NULL);
}
dbp2->close(dbp2,0);
}
dbenv->close(dbenv,0);
return 0;
}
下面是遍历
下面是遍历,速度非常的快,我存几万条简单的记录基本上是瞬间完成int main(int argc,char *argv[])
{
DB_ENV *dbenv;
int ret = db_env_create(&dbenv, 0);
dbenv->set_cachesize(dbenv, 0, 5 * 1024 * 1024, 0);
ret = dbenv->open(dbenv, "d:\\test\\", DB_CREATE|DB_INIT_LOG| DB_INIT_MPOOL, 0);
{
DB *dbp1=NULL;
ret = db_create(&dbp1, dbenv, 0);
int flags = DB_CREATE;
ret = dbp1->open(dbp1, NULL, "kingstock.db", "test1", DB_BTREE, flags, 0);
DBC *cursorp;
DBT key, data;
dbp1->cursor(dbp1, NULL, &cursorp, 0);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
while ((ret = cursorp->get(cursorp, &key, &data, DB_NEXT)) == 0)
{
int *pkey=(int *)key.data;
printf("Table 1:%d\n",*pkey);
}
cursorp->close(cursorp);
dbp1->close(dbp1,0);
}
{
DB *dbp2=NULL;
ret = db_create(&dbp2, dbenv, 0);
int flags = DB_CREATE;
ret = dbp2->open(dbp2, NULL, "kingstock.db", "test2", DB_BTREE, flags, 0);
DBC *cursorp;
DBT key, data;
dbp2->cursor(dbp2, NULL, &cursorp, 0);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
while ((ret = cursorp->get(cursorp, &key, &data, DB_NEXT)) == 0)
{
int *pkey=(int *)key.data;
printf("Table 1:%d\n",*pkey);
}
cursorp->close(cursorp);
dbp2->close(dbp2,0);
}
dbenv->close(dbenv,0);
return 0;
} 我们公司数据库底层也是基于Berkeley DB,呵呵 原帖由 modern 于 2009-8-19 13:02 发表 http://www.acejoy.com/bbs/images/common/back.gif
我们公司数据库底层也是基于Berkeley DB,呵呵
为什么不是用mysql?
页:
[1]