• C# 使用Berkeley DB


    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

    输入以下代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using BerkeleyDB;
     7 
     8 namespace BDBDemo
     9 {
    10     class Program
    11     {
    12         static void Main(string[] args)
    13         {
    14             BTreeDatabaseConfig bTreeDatabaseConfig = new BTreeDatabaseConfig();
    15             //文件不存在则创建
    16             bTreeDatabaseConfig.Creation = CreatePolicy.IF_NEEDED;
    17             //页大小
    18             bTreeDatabaseConfig.PageSize = 512;
    19             //缓存大小
    20             bTreeDatabaseConfig.CacheSize = new CacheInfo(0, 64 * 1024, 1);
    21             BTreeDatabase bTreeDatabase = BTreeDatabase.Open("demo.db", bTreeDatabaseConfig);
    22             string content = "HelloWorld";
    23             DatabaseEntry key = new DatabaseEntry(BitConverter.GetBytes(1));
    24             DatabaseEntry value = new DatabaseEntry(Encoding.ASCII.GetBytes(content));          
    25             bTreeDatabase.Put(key, value);
    26             Console.WriteLine("写入成功");
    27             KeyValuePair<DatabaseEntry, DatabaseEntry> pair = bTreeDatabase.Get(key);
    28             Console.WriteLine("读取写入");
    29             Console.WriteLine(Encoding.ASCII.GetString(pair.Value.Data));
    30             bTreeDatabase.Close();
    31         }
    32     }
    33 }

    运行结果:

    示例程序:

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

    Berkeley DB 编译源码

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

  • 相关阅读:
    js 随笔
    在windows下安装Composer(转载)
    博客添加背景音乐
    安装mysql5.7报错启动失败(3534)的处理
    windows 下搭php环境
    使用composer创建项目时报错:Composer could not find the config file?
    mysql-存储过程(二)-逻辑判断语句
    mysql-存储过程(1) mysql循环语句
    php批量更新mysql中的数据
    支付宝 APP登录 获取用户信息 PHP(转)
  • 原文地址:https://www.cnblogs.com/zhaotianff/p/10929955.html
Copyright © 2020-2023  润新知