Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165885
  • 博文数量: 36
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 01:48
个人简介

喝喝咖啡,做做开发

文章分类
文章存档

2014年(4)

2013年(1)

2012年(4)

2011年(2)

2010年(3)

2009年(9)

2008年(3)

2007年(10)

我的朋友

分类: 数据库开发技术

2010-06-12 20:29:03

对象数据库db4o试用记
李艳庆

db4o是一个开源的纯面向对象的数据库引擎,有.NET和Java版,对于面向对象开发者来说,这是一个简单易用的对象持久化类。“利用表格存储对象,就像是将汽车开回家,然后拆成零件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问,这是不是泊车的最有效的方法呢。” – Esther Dyson。想想也确实很有道理,如果数据取出来只是为了组装成一个对象,使用对象数据库就是最佳选择,但也并非所有的数据应用都需要去组成一个对象。
简单介绍db4o的使用方式。首先构造一个要保存到db4o的对象

public class Student
    {
        private string m_Name;
        private int m_Age;
        public Student()
        { }
        public Student(string name, int age)
        {
            this.m_Name = name;
            this.m_Age = age;
        }
        public string Name
        {
            get { return this.m_Name; }
            set { this.m_Name = value; }
        }
        public int Age
        {
            get { return this.m_Age; }
            set { this.m_Age = value; }
        }
        public int GetCode()
        {
            return this.m_Age * 2;
        }
    }


1、创建一个新的db4o数据库文件

IObjectContainer db = Db4oFactory.OpenFile("data.yap");

这需要使用db4o的命名空间Db4objects.Db4o

2.保存对象

Student s = new Student("hi", 30);

db.Store(s1);

3.查询对象

db4o中提供了3种查询方式,QBE, NQ, SODA。

3.1QBE

列举所有的Student:

IObjectSet result = db.QueryByExample(typeof(Student));

foreach (object obj in result)

{

    Student s = obj as Student;

}

按条件搜索:

Student s = new Student();

s.Name = "hi";

IObjectSet result = db.QueryByExample(s);

3.2NQ

IList<Student> ss = db.Query<Student>(delegate(Student s)

 { return s.Name=="li"; });

 foreach (Student s in ss)

  {

// 处理对象s  

  }

3.3SODA

            Db4objects.Db4o.Query.IQuery query = db.Query();

            query.Constrain(typeof(Student));

            //Db4objects.Db4o.Query.IConstraint constr = query.Descend("m_Name").Constrain("ha");

            //query.Descend("m_Age").Constrain(55).Smaller();

            //query.Descend("m_Name").OrderAscending();

            IObjectSet result = query.Execute();

            foreach (object obj in result)

            {

                Student s = obj as Student;

            }

4.更新对象

搜索出所需对象后,修改对象的属性,再使用Store方法保存,即是更新。

5.删除对象

搜索出所需对象后,使用db.delete(s)删除之。


阅读(629) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~