zoukankan      html  css  js  c++  java
  • 【笔记】【Berkeley DB】初窥Berkeley DB

    #include <stdio.h>
    #include <stdlib.h>
    #include <db.h>
    #include <string.h> int main(int argc, char* argv[]) { //declare DB_ENV *ptr_db_env; DB *ptr_db; DBT key, data; u_int32_t env_flags, db_flags; FILE *fptr_db_env_err_log, *fptr_db_err_log; int ret; int sel; int userid; char *username; username = (char*) malloc(100 * sizeof(char)); //initial fptr_db_env_err_log = fopen("./db_env_err.log", "r+"); if (NULL == fptr_db_env_err_log) { printf("Open Enviroment Log File Failed! "); } else { printf("Open Enviroment Log File Succeeded! "); } ret = db_env_create(&ptr_db_env, 0); if (0 != ret) { printf("Create DB Enviroment Failed! "); } else { printf("Create DB Enviroment Succeeded! "); ptr_db_env->set_errfile(ptr_db_env, fptr_db_env_err_log); } env_flags = DB_CREATE | DB_INIT_MPOOL; ret = ptr_db_env->open(ptr_db_env, "/tmp/dbs", env_flags, 0); if (0 != ret) { printf("Open DB Enviroment Failed! "); } else { printf("Open DB Enviroment Succeeded! "); } fptr_db_err_log = fopen("./db_err.log", "r+"); if (NULL == fptr_db_err_log) { printf("Open DB Log File Failed! "); } else { printf("Open DB Log File Succeeded! "); } ret = db_create(&ptr_db, ptr_db_env, 0); if (0 != ret) { printf("Create DB Failed! "); } else { printf("Create DB Succeeded! "); ptr_db->set_errfile(ptr_db, fptr_db_err_log); } db_flags = DB_CREATE; ret = ptr_db->open(ptr_db, NULL, "user.db", NULL, DB_HASH, db_flags, 0); if (0 != ret) { printf("Open DB Failed! "); } else { printf("Open DB Succeeded! "); } //ui memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT)); while (1) { printf("========Menu======== "); printf("1:add "); printf("2:query "); printf("3:delete "); printf("4:quit "); printf("Your selection:"); scanf("%d", &sel); switch (sel) { case 1: printf("Please input the key:"); scanf("%d", &userid); printf("Please input the name:"); scanf("%s", username); key.data = &userid; key.size = sizeof(int); data.data = username; data.size = strlen(username) + 1; ret = ptr_db->put(ptr_db, NULL, &key, &data, DB_NOOVERWRITE); if (DB_KEYEXIST == ret) { printf("DB Key already exist! "); } else { printf("Add Record Succeeded! "); } break; case 2: printf("Please input the key:"); scanf("%d", &userid); key.data = &userid; key.size = sizeof(int); data.data = username; data.ulen = 100; data.flags = DB_DBT_USERMEM; ret = ptr_db->get(ptr_db, NULL, &key, &data, 0); if (DB_NOTFOUND == ret) { printf("User ID %d Not Exist! ", userid); } else { printf("User ID:%d User Name:%s ", userid, username); } break; case 3: printf("Please input the key:"); scanf("%d", &userid); key.data = &userid; key.size = sizeof(int); ptr_db->del(ptr_db, NULL, &key, 0); printf("You have delete user %d succeeded ", userid); break; case 4: goto finish; break; default: printf("Unkown selection. "); break; } } //clean finish: if (NULL != fptr_db_err_log) { fclose(fptr_db_err_log); } if (NULL != fptr_db_env_err_log) { fclose(fptr_db_env_err_log); } if (NULL != ptr_db) { ptr_db->close(ptr_db, 0); } if (NULL != ptr_db_env) { ptr_db_env->close(ptr_db_env, 0); } return ret; }
  • 相关阅读:
    在Ubuntu 20.04 LTS Focal Fossa上安装Deluge
    如何使用命令行快速检查Linux系统的版本
    如何在Debian 10上安装NVM
    如何在CentOS 8上安装Apache ActiveMQ
    如何在Linux中引导时列出启动服务?
    如何检查Linux Mint 20磁盘错误的方法
    如何在Firewalld中打开特定IP地址的端口?
    如何在CentOS 8服务器安装oVirt开源虚拟化管理系统
    如何在Centos 8服务器上安装LogAnalyzer?
    如何在Debian中使用apt从命令行安装程序
  • 原文地址:https://www.cnblogs.com/AzikPhil/p/3427421.html
Copyright © 2011-2022 走看看