Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间。简称BDB

Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务。 Berkeley DB产品使用简单的函数调用API进行数据访问和管理。

它使用C开发,C#调用是以P/Invoke的形式,不过Oracle发行了C#的版本,里面封装了API的调用,所以我们只需要引用程序集直接调用就行。

更加详细的介绍,请访问Oracle Berkeley DB官网https://www.oracle.com/database/technologies/related/berkeleydb.html

下面开始介绍如何在C#中使用BerkeleyDB(由于官方并未提供编译好的dll,所以我们需要下载源码自己编译)

1、打开官方下载页面(需要登陆Oracle账号,文末提供了Windows平台源码的下载链接),三个链接任选一个,前面两个是压缩包,后面一个是安装包。推荐下载zip格式的

https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html

2、解压源码文件,打开build_windows目录,根据自己vs版本打开相应的sln文件

3、编译

这里要注意的两点是编译的版本以及输出目录

版本:如果我们需要64位版本的dll,就需要单独把每个工程都选成64位。32位也如此。如果位数不一致,就会调用不成功。

值得注意的是,在编译之前,要看清当前是Debug模式还是Release模式,是32位设置还是64位设置。 如果你当前活动的是Release模式,却改的是Debug模式的设置,这样就会导致编译出来的库有问题。

输出目录:这个解决方案中C#和C++编译输出的目录是不一样的,推荐把它们设置到一个目录,这样找文件方便,也不会搞乱。

我这里是把截图中的三个工程输出到了同一个目录,其它的工程是示例程序,可以忽略。

编译完成后,打开编译目录,可以看到以下文件

4、调用(这里只提供了简单使用的代码,更加详细的使用可以看上述解决方案中的其它工程)

新建一个C#控件台程序,将libdb_csharp181.dll,libdb_dotnet181.dll和libdb181.dll复制到程序输出目录,并引用libdb_dotnet181.dll

输入以下代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BerkeleyDB; namespace BDBDemo
{
class Program
{
static void Main(string[] args)
{
BTreeDatabaseConfig bTreeDatabaseConfig = new BTreeDatabaseConfig();
//文件不存在则创建
bTreeDatabaseConfig.Creation = CreatePolicy.IF_NEEDED;
//页大小
bTreeDatabaseConfig.PageSize = ;
//缓存大小
bTreeDatabaseConfig.CacheSize = new CacheInfo(, * , );
BTreeDatabase bTreeDatabase = BTreeDatabase.Open("demo.db", bTreeDatabaseConfig);
string content = "HelloWorld";
DatabaseEntry key = new DatabaseEntry(BitConverter.GetBytes());
DatabaseEntry value = new DatabaseEntry(Encoding.ASCII.GetBytes(content));
bTreeDatabase.Put(key, value);
Console.WriteLine("写入成功");
KeyValuePair<DatabaseEntry, DatabaseEntry> pair = bTreeDatabase.Get(key);
Console.WriteLine("读取写入");
Console.WriteLine(Encoding.ASCII.GetString(pair.Value.Data));
bTreeDatabase.Close();
}
}
}

运行结果:

示例程序:

https://files-cdn.cnblogs.com/files/zhaotianff/BDBDemo.zip

Berkeley DB 编译源码

https://files-cdn.cnblogs.com/files/zhaotianff/build_windows.zip

最新文章

  1. 如何采用easyui tree编写简单角色权限代码
  2. kali2.0中dradis的使用方法
  3. SIFT中的尺度空间和传统图像金字塔
  4. 【UOJ #17】【NOIP 2014】飞扬的小鸟
  5. Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
  6. ibatis + log4net 配置注意事项
  7. Scrum 项目 7.0 Sprint回顾
  8. pip使用报错【cannot import name HTTPSHandler】
  9. poj2406 周期
  10. android110 jni01
  11. struts2-core-2.1.6.jar!/struts-default.xml无法加载的问题
  12. MYSQL预处理传参不区分大小写解决办法
  13. DataGrid( 数据表格) 组件[1]
  14. Hive 10、Hive的UDF、UDAF、UDTF
  15. gulp用法
  16. 添加Pods依赖
  17. ftp利用脚本添加本地用户
  18. python数据类型内置方法 字符串和列表
  19. 将Highcharts图表数据生成Table表格
  20. Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数

热门文章

  1. https://zhuanlan.zhihu.com/p/32553477
  2. 用filter求素数
  3. SQLite数据库数据类型详解
  4. React错误收集
  5. 报错 react-hot-loader
  6. Spring MVC初始化
  7. spring 使用Spring表达式(Spring EL)
  8. 基于Java API for WebSocket (JSR-356)的标准websocket客户端
  9. JAVA8中接口的一些新用法(springboot环境)
  10. Python - Django - 组件