【问题标题】:How to view a ".db file in linux with no GUI如何在没有 GUI 的情况下在 linux 中查看“.db 文件”
【发布时间】:2011-11-01 11:50:17
【问题描述】:

我已经使用 Berkeley DB 使用 C 创建了一个 .db 文件。我想查看 .db 文件中的内容。当我在 linux 机器上没有 GUI 时如何实现这一点?

【问题讨论】:

  • 它只是二进制垃圾,偶尔会出现字符串,但您可以直接vi 文件,或使用od 将其转储为更易读的 hexdump 格式。跨度>
  • 没有图形用户界面,通常会让事情变得更容易;并不像你暗示的那样更难。只需读取数据(使用get)和printf

标签: c berkeley-db


【解决方案1】:

如果你的系统已经安装了Berkeley DB,你可以这样使用它,这是一个demo来测试,希望它能解决你的问题:

#include <stdio.h>
#include <stdlib.h>
#include <db.h>

#define DATABASE "test.db"

typedef struct _data_struct {
    int data_id;
    char data[20];
} data_struct;

int main()
{
    DBT key, data;
    DB *dbp;
    int ret;
    data_struct my_data;

    ret = db_create(&dbp, NULL, 0);  // create the DB handle
    if (ret != 0)
    {
        perror("create");
        return 1;
    }

    ret = dbp->open(dbp, NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0);  // open the database
    if (ret != 0)
    {
        perror("open");
        return 1;
    }


    my_data.data_id = 1;
    strcpy(my_data.data, "some data");

    memset(&key, 0, sizeof(DBT));
    memset(&data, 0, sizeof(DBT));

    key.data = &(my_data.data_id);
    key.size = sizeof(my_data.data_id);
    data.data = &my_data;
    data.size = sizeof(my_data);

    ret = dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);  // add the new data into the database
    if (ret != 0)
    {
        printf("Data ID exists\n");
    }

    dbp->close(dbp, 0);   // close the database

    return 0;
}

【讨论】:

  • db.h 是什么,在哪里?
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多