📄 main.c
字号:
#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include <string.h>/* To use bdb, include this header file.*/#include <db.h> #define DB_FILE "test_data.db"int main(){ DB_ENV *myEnv; DB *dbp; DBT key, data; int ret,t_ret; u_int32_t env_flags; /* env open flags */ /* Create an environment object and initialize it for error reporting. */ ret = db_env_create(&myEnv, 0); if (ret != 0) { printf("Error creating env handle: %s\n", db_strerror(ret)); return -1; } /* Open the environment. */ env_flags = DB_CREATE | /* If the environment does not exist, create it. */ DB_INIT_MPOOL; /* Initialize the in-memory cache. */ ret = myEnv->open(myEnv, /* DB_ENV ptr */ "/tmp/db/testEnv", /* env home directory */ env_flags, /* Open flags */ 0); /* File mode (default) */ if (ret != 0) { printf("Environment open failed: %s\n", db_strerror(ret)); return -1; } /* create database*/ if ((ret = db_create(&dbp, myEnv, 0)) != 0) { printf("db_create: %s\n", db_strerror(ret)); return -1; } if ((ret = dbp->open(dbp, NULL, DB_FILE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) { dbp->err(dbp, ret, "%s", DB_FILE); return -1; } char* name = "Bill"; int height = 175; memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); key.data = name; key.size = strlen(name) + 1; data.data = &height; data.size = sizeof(int); /* put data, NO-OVERWRITE */ if ((ret = dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) == 0) printf("bdb -- key: %s and data: %d stored.\n", (char *)key.data, *((int *)data.data)); else dbp->err(dbp, ret, "bdb -- put error"); /* get data */ DBT ret_key, ret_data; memset(&ret_key, 0, sizeof(&ret_key)); memset(&ret_data, 0, sizeof(&ret_data)); ret_key.data = name; ret_key.size = strlen(name) + 1; ret_key.flags = DB_DBT_USERMEM; int h = 0; ret_data.data = &h; ret_data.ulen = sizeof(int); ret_data.flags = DB_DBT_USERMEM; if ((ret = dbp->get(dbp, NULL, &ret_key, &ret_data, 0)) == 0) { printf("bdb -- key: %s retrieved; data was %d.\n", (char *)ret_key.data, h); } else dbp->err(dbp, ret, "bdb -- get record error"); /* delelte record */ if((ret = dbp->del(dbp, NULL, &key, 0)) == 0) printf("bdb -- key %s was deleted.\n", (char *)key.data); else dbp->err(dbp, ret, "bdb -- delelte db error"); /* close, only when the db successful closed,the data can real write to the disk. */ if (dbp != NULL) dbp->close(dbp, 0); /* Close evn * When you are done with an environment, you must close it. * Before you close an environment, make sure you close any opened databases */ if (myEnv != NULL) myEnv->close(myEnv, 0); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -