#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) {
//使用dbp->open()创建数据库
fprintf(stderr, "db_create: %s/n", db_strerror(ret));
exit (1);
}
//参数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) {
//所有的数据库结构(DBT)应该被初始化后使用
dbp->err(dbp, ret, "%s", DATABASE);
goto err;
}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)
if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)
printf("db: %s: key retrieved: data was %s./n",
(char *)key.data, (char *)data.data);
else
dbp->err(dbp, ret, "DB->get");ret = t_ret;
exit(ret);
}