程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#使用BerkeleyDB操作簡介(1)

C#使用BerkeleyDB操作簡介(1)

編輯:關於C語言

Berkeley DB是歷史悠久的嵌入式數據庫系統,主要應用在UNIX/Linux操作系統上。Berkeley DB的存儲的是key/value鍵值對,可以理解為硬盤上的超級hash表。其可以管理256TB數據,而且能支撐幾千個並發訪問。目前Berkeley DB有C++版和Java版。所以,我們需要一個訪問的中間轉換,已經有人發布了C#的API。可以從 Berkeley DB for .Net 上面找到,現在最新版是0.95版本,可以支持4.3和4.5版。本篇將以4.5版做實例。BerkeleyDB的版本可以在http://www.oracle.com/technology/products/berkeley-db/index.html下載,當前最新版本為4.7版。4.5 C++版的Berkeley DB可以在http://www.Oracle.com/technology/software/products/berkeley-db/db/index.Html這裡下載。

By Birdshover@ 博客園 http://www.cnblogs.com/birdshover/

下載到Berkeley DB for .Net的API——libdb-dotnet_0_95.zip後,就可以開始使用了。首先在libdb-dotnet_0_95.zip解壓縮的bin目錄找到libdb_dotNET45.dll,這個就是4.5版本使用的dll。新建項目,引用這個dll。注意,自己編譯源碼可能會編譯不過,主要是因為裡面一些委托和委托的參數可見性不一致造成的。把那些參數用到的class 或者struct都調成public即可。

BerkeleyDB的數據庫操作需要借助DbBTree類。因此需要先得到DbBTree的實例,但是DbBTree類會對其它幾個類有依賴,必須依賴其它幾個類才能創建。

下面代碼就是初始化得到DbBTree實例的一個過程。

/// <summary>
/// 數據庫目錄
/// </summary>
private string directory;
/// <summary>
/// 數據庫文件名
/// </summary>
private string dbName;

private DbBTree btree;
private Txn txn;
private Db db;
private Env env;
/// <summary>
/// 初始化
/// </summary>
private void Init()
{
env = new Env(EnvCreateFlags.None);
Env.OpenFlags envFlags =
Env.OpenFlags.Create |
Env.OpenFlags.InitLock |
Env.OpenFlags.InitLog |
Env.OpenFlags.InitMPool |
Env.OpenFlags.InitTxn |
Env.OpenFlags.Recover;
env.Open(directory, envFlags, 0);
txn = env.TxnBegin(null, Txn.BeginFlags.None);
db = env.CreateDatabase(DbCreateFlags.None);
btree = (DbBTree)db.Open(txn, dbName, null, DbType.BTree, Db.OpenFlags.Create, 0);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved