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

Berkeley DB .net 进行添加和更新操作

阅读更多

使用hash格式的put方法,当key已经存在时,则更新该key的键值,若没有该key,则向数据库中插入一条新的记录,demo代码如下:

插入或是更新的代码片段:

 

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 Class18
    {
        
static void Main(string[] args)
        {
            People a
=new People()
                         {
                             Age
=20,
                             Name
="30"
                         };
            Db db 
= new Db(DbCreateFlags.None);
            
try
            {
                DbFile dbf 
= db.Open(null@"Tasks.asap"null, DbType.Hash, Db.OpenFlags.Create, 0);
                MemoryStream stream 
= new MemoryStream();
                BinaryFormatter formatter 
= new BinaryFormatter();
                formatter.Serialize(stream, a);
                DbEntry _key 
= DbEntry.InOut(Encoding.UTF8.GetBytes("1"));
                DbEntry _data 
= DbEntry.InOut(stream.ToArray());

                
if (dbf.Put(nullref _key, ref _data) != 0)
                    Console.Write(
"{0}:输入错误""");
                
//dbf.Put(null, ref _key, ref _data);

                dbf.Sync();
//数据更新 
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"打开数据库Tasks.p失败");
            }
            db.Close();

        }
    }
}

 

遍历查看结果

 

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 Class19
    {
        static void Main(string[] args)
        {
            //遍历数据
            using (Db db = new Db(DbCreateFlags.None))
            {
                //这里如果应用Db.OpenFlags.Create则在启动后会覆盖同名文件,并新建同名文件
                //Db.OpenFlags.Truncate会清空数据库
                DbHash dbf = (DbHash)db.Open(null, @"Tasks.asap", null, DbType.Hash,
    Db.OpenFlags.ThreadSafe, 0);

                using (DbHashCursor cursor = dbf.OpenCursor(null, DbFileCursor.CreateFlags.None))
                {
                    foreach (KeyDataPair kdp in cursor)
                    {
                        //int k = BitConverter.ToInt32(kdp.Key.Buffer, 0);
                        //Console.WriteLine("k={0}", k.ToString());
                        string k = Encoding.UTF8.GetString(kdp.Key.Buffer, 0, kdp.Key.Size);
                        Console.WriteLine("key={0}", k);
                        BinaryFormatter bf = new BinaryFormatter();
                        MemoryStream stream = new MemoryStream();
                        stream.Write(kdp.Data.Buffer, 0, kdp.Data.Size);
                        stream.Seek(0, SeekOrigin.Begin);
                        People p2 = (People)bf.Deserialize(stream);
                        Console.WriteLine("Age={0}", p2.Age);
                        Console.WriteLine("Name={0}", p2.Name);


                    }
                }

 

            }
            Console.ReadLine();
        }
    }
}

分享到:
评论

相关推荐

    dbxml-2.3.10.rar

    通过源码,我们可以看到这些API是如何封装Berkeley DB操作,提供面向XML的高级功能,如XQuery支持和事务管理。 总的来说,dbxml 2.3.10版本为开发者和系统管理员提供了强大的工具,无论是在Windows还是Linux环境下...

    openldap安装工具

    它提供目录服务,允许客户端通过TCP/IP协议查询、添加、修改和删除目录中的条目。在Windows系统上,OpenLDAP可能需要额外的配置来适应Windows服务模型。 2. **数据库支持**: 文件名中的"db-4.3.29"指的是Berkeley...

    Windows下Subversion服务器搭建指南

    - 数据存储格式:Subversion支持两种数据存储格式——Berkeley DB和FSFS。Berkeley DB适合小型项目,而FSFS适合大型项目,因为它更稳定且不受文件系统限制。 - 创建版本库:安装完成后,通过命令行工具`svnadmin`...

    windows环境搭建SVN说明及安装包

    2. **设置仓库格式**:默认的bdb(Berkeley DB)格式适用于小型项目,对于大型项目,推荐选择fsfs(File System)格式,它更稳定且易于备份。 3. **配置访问控制**:创建用户和用户组,然后为仓库分配权限。在"Users...

    linux下安装配置svn独立服务器

    此外,SVN还提供了两种存储版本数据的方式:Berkley DB (BDB) 和 Filesystem (FSFS)。BDB在服务器出现故障时可能会导致数据锁定的问题,因此推荐使用FSFS存储方式。 #### 三、安装SVN **1. 获取SVN安装包** 首先...

    MyICQ是一套公开源代码的即时通讯软件

    4) 在VC的Tools-&gt;Options-&gt;Directories中设置好MySQL和BerkeleyDB的include和library路径 5) 在VC中打开myicq-win32/src/win32/myicq.dsw项目文件 6) 编译 --------- 8. TODO --------- 1) POP3邮件自动监测(插件)...

    即时通myicq源代码

    4) 在VC的Tools-&gt;Options-&gt;Directories中设置好MySQL和BerkeleyDB的include和library路径 5) 在VC中打开myicq-win32/src/win32/myicq.dsw项目文件 6) 编译 --------- 8. TODO --------- 1) POP3邮件自动监测(插件)...

    ubuntu9.04 server上配置cvsnt

    ./configure --prefix=/usr/local/cvsnt --with-db=berkeley --with-ssl make sudo make install ``` 配置完成后,我们需要创建CVSNT的服务账户和数据目录: ```bash sudo useradd -r cvsnt sudo mkdir /var/lib/...

    《计算机网络》实习报告书

    虚拟服务器的设置对于后续的协议分析至关重要,因为它提供了一个隔离的环境来进行各种网络服务的部署和测试。 ### 3. HTTP、Telnet、FTP、DNS 四种应用层协议的服务器在 Linux 环境下的架设 - **HTTP 服务器**:...

    linxu下svn的安装与配置

    ./configure --without-berkeley-db --prefix=/usr/local/subversion ``` 4. **编译和安装**: ```bash make make install ``` 在这个过程中可能会遇到错误提示,比如要求安装 OpenSSL 和 zlib 库,下面将...

    MySQL5.1参考手册官方简体中文版

    12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历?...

    MySQL 5.1中文手冊

    添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和...

    centos DNS

    接下来,配置区域文件`/etc/named.rfc1912.zones`,添加正向和反向解析区域的定义: ```bash vi /etc/named.rfc1912.zones ``` 在文件末尾添加以下内容: ```conf zone "a.cn" IN { type master; file "a.cn.zone"...

    mysql官方中文参考手册

    添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和...

    MYSQL中文手册

    12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用...

    MySQL 5.1参考手册中文版

    12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么...

    MySQL 5.1参考手册 (中文版)

    添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和...

    MySQL 5.1参考手册

    添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和...

Global site tag (gtag.js) - Google Analytics