`
mlzboy
  • 浏览: 703187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Berkeley Db Associate关联数据函数的使用

阅读更多
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using BerkeleyDb;

namespace BerkeleyDBDemo
{
    
public class Class4
    {
        
static void Main(string[] args)
        {


            
using (Db db = new Db(DbCreateFlags.None))
            {
                db.RecLen 
= 5000;
                db.RecPad 
= '.';
                DbQueue file 
= (DbQueue)db.Open(null@"task.aaa"null, DbType.Queue, Db.OpenFlags.Create, 0);

                
using(Db db2=new Db(DbCreateFlags.None))
                {
                    db2.SetFlags(DbFlags.Dup
|DbFlags.DupSort);
                    DbFile secondfile 
= db2.Open(null@"task.bbb"null, DbType.BTree, Db.OpenFlags.Create, 0);
                    file.Associate(secondfile,
                        
                                   
delegate(DbFile _secondary, ref DbEntry _key, ref DbEntry _data, out DbEntry _k)
                                       {
                                           
//_secondary二级库
                                           
//_key一级库
                                           
//_data一级库
                                           
//_result被创造的二级库key值

                                           MemoryStream _stream 
= new MemoryStream();
                                           BinaryFormatter _bf
=new BinaryFormatter();
                                           _stream.Write(_data.Buffer, 
0, _data.Size);
                                           _stream.Seek(
0, SeekOrigin.Begin);
                                           Task task2 
= (Task)_bf.Deserialize(_stream);
                                           _stream.Close();
                                           _k 
= DbEntry.InOut(Encoding.UTF8.GetBytes(task2.Author));
                                           
//_secondary.Put(null, ref _k, ref _key);
                                           
//_secondary.Sync();

                                           
return DbFile.KeyGenStatus.Success;
                                       }, DbFile.AssociateFlags.Create);

                    
////创建一个任务的一条数据
                    Task task = new Task()
                    {
                        Id 
= Guid.NewGuid().ToString(),
                        Author 
= "lexus",
                        CreatedDate 
= DateTime.Now
                    };

                    AddData(file, task);
                    AddData(file, task);
                    AddData(file, task);
                    task.Author 
= "bbb";
                    AddData(file, task);
                    task.Author 
= "ccc";
                    AddData(file, task);
                    file.Sync();
                }

                Console.WriteLine(
"finished");
            }
            Console.ReadLine();
        }

        
private static void AddData(DbQueue file, Task task)
        {
            BinaryFormatter bf 
= new BinaryFormatter();
            MemoryStream stream 
= new MemoryStream();
            bf.Serialize(stream, task);
            DbEntry key 
= DbEntry.Out(new byte[1024]);
            DbEntry data 
= DbEntry.InOut(stream.ToArray());
            stream.Close();
            file.Append(
nullref key, ref data);
        }
    }
}

 

由于bdb无法使用sql,因此关联数据库的运用将使你减轻负担,要理解关联数据库可以将它理解成关系数据库中一对多关系,一端指primary db,多端指secondary db,具体可以参看其doc

分享到:
评论

相关推荐

    Berkeley DB数据库 6.2.32 64位

    Berkeley DB是一个嵌入式数据库,为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。 主要特点: 嵌入式:直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同...

    Berkeley DB4.8以上各版本

    Berkeley DB4.8以上各版本,已经亲测过哪些版本可与redhat6.5兼容,见附件名称备注。

    Berkeley DB 读取样例

    嵌入式数据库Berkeley DB Java Edition Berkeley DB的使用 使用Berkeley DB的一般步骤 创建、打开、操作、关闭数据库环境Environment

    berkeley db使用手册

    berkeley db 使用手册

    Berkeley DB Java 版 4.0.92

    Oracle Berkeley DB Java 版是一个开源的、可嵌入的事务存储引擎,是完全用 Java 编写的。与 Oracle Berkeley DB 类似,Oracle Berkeley DB Java 版在应用程序的地址空间中执行,没有客户端/服务器通信的开销,从而...

    Berkeley DB的java版本

    Berkeley DB Java Edition JE 是一个完全用JAVA写的 它适合于管理海量的 简单的数据 能够高效率的处理1到1百万条记录 制约JE数据库的往往是硬件系统 而不是JE本身 多线程支持 JE使用超时的方式来处理线程间的死琐...

    Berkeley DB

    Berkeley DB(BDB)是OpenLDAP后台数据库的默认配置,因此在安装OpenLDAP之前应先安装BDB。

    Berkeley DB C++编程入门教

    介绍DB API的设置与使用的快速入门手册,目标是提供一个快速有效地机制,能让你进入Berkeley DB研发的世界。在本文中侧重于C++语言的研发人员,以及研究进城内数据管理解决方案的资深架构师。

    BerkeleyDB测试程序

    BerkeleyDB测试程序 包含散列文件入库,和读取的速度的测试

    Berkeley db使用方法简介(c接口)

    Berkeley db使用方法简介(c接口) 非SQL的高速内存数据库的使用方法,简单明了..

    Berkeley DB数据库支持事物的C++语言入门教程

    本文描述了如何在Berkeley DB中使用事务(Transaction)。它简要介绍了事务是如何保护你的应用的数据的,以及相对应的API(应用程序接口)。包括如何在你的支持事务的应用中使用环境(environment)和任务管理。此外...

    Berkeley DB 资料

    Berkeley DB 批量插入更新与删除用法示例 Berkeley 函数接口 Berkeley DB 由浅入深 SQL 开发人员 Oracle Berkeley DB 指南 Berkeley DB参考手册

    Berkeley DB 5.3.21.tar

    Berkeley DB 5.3.21.tar,你也可以去http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html下载最新版

    Berkeley DB文章集合

    Berkeley DB文章集合

    BerkeleyDB

    BerkeleyDB的java应用jar包

    Berkeley DB数据库最新版

    Berkeley DB6.0.20 Berkeley DB BDB Berkeley DB数据库

    BerkeleyDB-JE je-6.0.11

    Oracle BerkeleyDB-JE je-6.0.11

    sqlite PK Berkeley DB

    sqlite 和Berkeley db各方面 的比较

    BerkeleyDB Java Edition用户手册

    Java版本的Berkeley DB用户手册,找了好久

    Berkeley DB Java Edition 4.1.10.zip

    Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据。 能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不是JE本身。 多线程支持,JE使用超时的方式来处理...

Global site tag (gtag.js) - Google Analytics