C# Berkeley DB数据库

开发 后端
本文介绍C# Berkeley DB数据库,Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上。

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版做实例。

下载到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即可。

C# Berkeley DB数据库操作需要借助DbBTree类。因此需要先得到DbBTree的实例,但是DbBTree类会对其它几个类有依赖,必须依赖其它几个类才能创建。

下面代码就是初始化得到DbBTree实例的一个过程。

  1. /// <summary> 
  2. /// 数据库目录  
  3. /// </summary> 
  4. private string directory;  
  5. /// <summary> 
  6. /// 数据库文件名  
  7. /// </summary> 
  8. private string dbName;  
  9.  
  10. private DbBTree btree;  
  11. private Txn txn;  
  12. private Db db;  
  13. private Env env;  
  14. /// <summary> 
  15. /// 初始化  
  16. /// </summary> 
  17. private void Init(){  
  18. env = new Env(EnvCreateFlags.None);  
  19. Env.OpenFlags envFlags =  
  20. Env.OpenFlags.Create |  
  21. Env.OpenFlags.InitLock |  
  22. Env.OpenFlags.InitLog |  
  23. Env.OpenFlags.InitMPool |  
  24. Env.OpenFlags.InitTxn |  
  25. Env.OpenFlags.Recover;  
  26. env.Open(directory, envFlags, 0);  
  27. txn = env.TxnBegin(null, Txn.BeginFlags.None);  
  28. db = env.CreateDatabase(DbCreateFlags.None);  
  29. btree = (DbBTree)db.Open(txn, dbName, null, DbType.BTree, Db.OpenFlags.Create, 0);  

另外C# Berkeley DB数据库的操作需要借助于序列化。

  1. ///<summary> 
  2. ///二进制序列化  
  3. ///</summary> 
  4. privateBinaryFormatterformatter;  
  5. ///<summary> 
  6. ///键内存流  
  7. ///</summary> 
  8. privateMemoryStreamkeyStream;  
  9. ///<summary> 
  10. ///内容内存流  
  11. ///</summary> 
  12. privateMemoryStreamdataStream;  
  13.  
  14. privatevoidStreamInit()  
  15. {  
  16. formatter=newBinaryFormatter();  
  17. keyStream=newMemoryStream();  
  18. dataStream=newMemoryStream();  

键值C# Berkeley DB数据库,因此定义一个获取键接口:

  1. publicinterfaceIPut  
  2. {  
  3. stringKey{get;}  

【编辑推荐】

  1. C#数据库查询和操作大全
  2. 浅析C#扩展方法
  3. C# Singleton的使用及优缺点探讨
  4. 详细分析C#数据库连接池
  5. C#数据库备份及还原的实现代码
责任编辑:佚名 来源: IT168
相关推荐

2011-03-25 13:27:12

Berkeley DB

2009-08-07 15:26:38

C#数据库编程实例

2024-04-18 09:56:16

2009-03-19 10:08:09

C#数据库查询

2011-03-03 09:45:25

DB2数据库Visual C#

2010-10-26 15:21:11

连接Oracle数据库

2009-08-07 16:19:00

C#下数据库编程

2009-08-25 12:50:32

数据库常用C#代码

2009-08-12 14:27:36

访问MySQL数据库C# ODBC

2009-08-24 18:09:13

C#调用Oracle数

2009-08-17 17:42:57

C#数据库操作类

2009-07-31 17:01:21

C#存取Access数

2009-08-06 18:10:06

C#数据库事务

2009-08-07 16:19:00

C#下数据库编程

2009-08-25 14:05:06

C#连接数据库代码

2009-09-04 17:23:21

C#数据库连接对象

2009-09-04 17:53:23

C#增加数据库数据

2011-03-17 15:59:37

c#数据库

2009-08-25 15:50:13

C#连接远程数据库

2009-08-07 14:02:12

C#数据库连接字符串
点赞
收藏

51CTO技术栈公众号