备注学院

LuLu

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 50 文章 :: 16 评论 :: 0 Trackbacks
Berkeley DB 是个驰名已久的好东西,在专用领域,其性能罕有敌手。作为其 .NET 平台的封装版本,Berkeley DB for .NET 却让人感觉非常郁闷,且不说那类似 C++ 风格的源码,单就其升级维护周期都让人很不放心。有点不理解,为什么作者不参考 Berkeley DB for Java ~~~~ 不过还好,0.95 版本的发布,让我们看到了实用的可能。Berkeley DB for .NET 的源码和文档看得我头晕脑胀,如果有什么差错,多多包涵……

有关 Berkeley DB 的基本概念,可参考以下文章。

嵌入式数据库系统Berkeley DB (施聪)
Berkeley DB 概述 (皮东)

C/C++ 使用教程

风满袖

----------- 犯困的分隔线 ----------------------

先下载相关的程序包。

Berkeley DB 4.5.20
Berkeley DB for .NET 0.95

将两个包中的 "libdb45.dll、libdb_dotNET45.dll、BerkeleyDb.Utils45.dll、Kds.Serialization.dll" 等文件拷贝到你的项目工程相关目录中,并将 Berkeley DB for .NET 的程序集(后三个文件) 添加到工程引用中。OK,还是老样子,先来个简单的 "Hello, World!" 试试。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using BerkeleyDb;
using BerkeleyDb.Serialization;
using Kds.Serialization;
using Kds.Serialization.Buffer;

namespace ConsoleApplication1
{
  public class Program
  {
    static void Main(string[] args)
    {
      using (Db db = new Db(DbCreateFlags.None))
      {
        DbFile dbf = db.Open(null, @"test._db", null, DbType.BTree, Db.OpenFlags.Create, 0);

        DbEntry key = DbEntry.InOut(BitConverter.GetBytes(123));
        DbEntry data = DbEntry.InOut(Encoding.UTF8.GetBytes("Hello, World!"));

        Console.WriteLine(dbf.Put(null, ref key, ref data));
        dbf.Sync();

        ReadStatus status = dbf.Get(null, ref key, ref data, DbFile.ReadFlags.None);
        string s = Encoding.UTF8.GetString(data.Buffer, 0, data.Size);
        Console.WriteLine(s);
      }
    }
  }
}

输出:
Success
Hello, World!
posted on 2008-11-13 10:35 smildlzj 阅读(955) 评论(2)  编辑  收藏 所属分类: 数据库C#

评论

# re: Berkeley DB for .NET - Hello, World![未登录] 2012-04-11 10:47 lee
上面提供的下载地址不可下载
我在其他网站上找到的libdb45.dll怎么在vs08上面添加引用怎么添加不进来
你的libdb45.dll是在哪下载的?给以发一份给我吗


谢谢!!!  回复  更多评论
  

# re: Berkeley DB for .NET - Hello, World![未登录] 2012-04-11 10:48 lee
噢~ 忘记说我的联系方式了 cololee@foxmail.com 谢谢了 或者是+我交流也行Q373216365  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: