LevelDB C++教程: 如何打開和關閉數據庫

簡介

LevelDB提供持久鍵值存儲功能。鍵和值是任意字節數組。根據用戶指定的比較函數,在鍵值存儲區內對鍵進行排序。
本文將介紹LevelDB的打開和關閉數據的基本操作,爲後面的鍵值存儲操作做準備。

代碼示例

下面的代碼功能實現了完整的打開和關閉數據庫的功能,下面會對代碼來進行逐一講解:

#include <iostream>
#include <cassert>
#include <leveldb/db.h>

int main(int argc, const char *argv[])
{
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    
    leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
    assert(status.ok());

    std::cout << "Hello, world with leveldb in it!\n";

    delete db;

    return 0;
}

打開數據庫

LevelDB數據庫具有一個與文件系統目錄對應的名稱。數據庫的所有內容都存儲在此目錄中。下列的代碼中展示如何打開一個LevelDB數據庫,必要時創建它:

#include <cassert>
#include "leveldb/db.h"

leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;

leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());

如果要在數據庫已存在時引發錯誤(raise an error),請在leveldb :: DB :: Open調用之前添加以下行:

options.error_if_exists = true;

關閉數據庫

在使用完數據庫之後,需要刪除數據庫對象:

... open the db as described above ...
... do something with db ...
delete db;

Status操作結果

您可能已經注意到上面的leveldb :: Status類型。 LevelDB中的大多數函數都會返回此類型的值您可以檢查這樣的結果是否正常,還打印相關的錯誤消息:

leveldb::Status s = ...;
if (!s.ok()) cerr << s.ToString() << endl;

編譯執行

在Linux下,通過下面的命令可以對程序進行編譯鏈接:

gcc -o test test.cpp  -L/usr/local/lib/ -lleveldb -lstdc++

編譯鏈接後會生成test可執行文件,執行時能夠輸出上面的"Hello World"信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章