溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C# Berkeley DB數(shù)據(jù)庫(kù)怎么用

發(fā)布時(shí)間:2021-12-01 14:13:57 來(lái)源:億速云 閱讀:155 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹C# Berkeley DB數(shù)據(jù)庫(kù)怎么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

Berkeley DB是歷史悠久的嵌入式數(shù)據(jù)庫(kù)系統(tǒng),主要應(yīng)用在UNIX/LINUX操作系統(tǒng)上。Berkeley DB的存儲(chǔ)的是key/value鍵值對(duì),可以理解為硬盤上的超級(jí)hash表。其可以管理256TB數(shù)據(jù),而且能支撐幾千個(gè)并發(fā)訪問(wèn)。目前Berkeley DB有C++版和Java版。所以,我們需要一個(gè)訪問(wèn)的中間轉(zhuǎn)換,已經(jīng)有人發(fā)布了C#的API??梢詮?Berkeley DB for .NET 上面找到,現(xiàn)在***版是0.95版本,可以支持4.3和4.5版。本篇將以4.5版做實(shí)例。

下載到Berkeley DB for .Net的 API——libdb-dotnet_0_95.zip后,就可以開(kāi)始使用了。首先在libdb-dotnet_0_95.zip解壓縮的bin目錄找到 libdb_dotNET45.dll,這個(gè)就是4.5版本使用的dll。新建項(xiàng)目,引用這個(gè)dll。注意,自己編譯源碼可能會(huì)編譯不過(guò),主要是因?yàn)槔锩嬉恍┪泻臀械膮?shù)可見(jiàn)性不一致造成的。把那些參數(shù)用到的class 或者struct都調(diào)成public即可。

C# Berkeley DB數(shù)據(jù)庫(kù)操作需要借助DbBTree類。因此需要先得到DbBTree的實(shí)例,但是DbBTree類會(huì)對(duì)其它幾個(gè)類有依賴,必須依賴其它幾個(gè)類才能創(chuàng)建。

下面代碼就是初始化得到DbBTree實(shí)例的一個(gè)過(guò)程。

/// <summary> /// 數(shù)據(jù)庫(kù)目錄  /// </summary> private string directory;  /// <summary> /// 數(shù)據(jù)庫(kù)文件名  /// </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);  }

另外C# Berkeley DB數(shù)據(jù)庫(kù)的操作需要借助于序列化。

///<summary> ///二進(jìn)制序列化  ///</summary> privateBinaryFormatterformatter;  ///<summary> ///鍵內(nèi)存流  ///</summary> privateMemoryStreamkeyStream;  ///<summary> ///內(nèi)容內(nèi)存流  ///</summary> privateMemoryStreamdataStream;   privatevoidStreamInit()  {  formatter=newBinaryFormatter();  keyStream=newMemoryStream();  dataStream=newMemoryStream();  }

鍵值C# Berkeley DB數(shù)據(jù)庫(kù),因此定義一個(gè)獲取鍵接口:

publicinterfaceIPut  {  stringKey{get;}  }

以上是“C# Berkeley DB數(shù)據(jù)庫(kù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI