berkeley introduction

#include <sys/types.h>
#include <stdio.h>
#include <db.h>

#define DATABASE "access.db"

int
main()

{
//声明数据库句柄dbp

 DB *dbp;

//数据库存储数据的结构

 DBT key, data;
int ret, t_ret;


//db_create创建数据库并返回数据库句柄dbp

//参数1:数据库句柄

//参数2:指定使用此句柄创建的数据库所属环境

//参数3:flags,用来设定将被打开数据库的属性

if ((ret = db_create(&dbp, NULL, 0)) != 0) {
fprintf(stderr, "db_create: %s/n", db_strerror(ret));
exit (1);
}

//使用dbp->open()创建数据库

//参数1:dbp是数据库句柄

//参数2:存储该数据库的文件名称

//参数3:被创建的数据库名称

//参数4:被创建的数据库类型为DB_BTREE, DB_HASH, DB_QUEUE or DB_RECNO之一

//参数5:flags数据库的创建属性

//参数6:数据库访问限值(0664表示数据库所有者和组可读可写而其他人可读)

if ((ret = dbp->open(dbp,

NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
dbp->err(dbp, ret, "%s", DATABASE);
goto err;
}

//所有的数据库结构(DBT)应该被初始化后使用

memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = "fruit";
key.size = sizeof("fruit");
data.data = "apple";
data.size = sizeof("apple");

//向数据库中插入一条记录

//参数1:数据库句柄

//参数2:事务句柄

//参数3:插入数据库中的一条记录的关键字

//参数4:插入数据库中的一条记录的数据
//参数5:flag
if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) == 0)

printf("db: %s: key stored./n", (char *)key.data);
else {
dbp->err(dbp, ret, "DB->put");
goto err;
}

//从数据库中取出一条记录
//参数1:数据库句柄
//参数2:事务句柄
//参数3:取出数据库中的一条记录的关键字
//参数4:取出数据库中的一条记录的数据
//参数5:flag
 if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)

printf("db: %s: key retrieved: data was %s./n",
(char *)key.data, (char *)data.data);
else {
dbp->err(dbp, ret, "DB->get");
goto err;
}

//从数据库中删除一条记录
//参数1:数据库句柄
//参数2:事务句柄
//参数3:数据库中的一条记录的关键字
//参数4:flag
 if ((ret = dbp->del(dbp, NULL, &key, 0)) == 0)
 printf("db: %s: key was deleted./n", (char *)key.data);

else {
dbp->err(dbp, ret, "DB->del");
goto err;
}

if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)
printf("db: %s: key retrieved: data was %s./n",
(char *)key.data, (char *)data.data);
else
dbp->err(dbp, ret, "DB->get");

if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)

ret = t_ret;

exit(ret);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值