当前位置: 首页 > 工具软件 > Berkeley Yacc > 使用案例 >

berkeley introduction

庄阿苏
2023-12-01
#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);
}


 类似资料:

相关阅读

相关文章

相关问答