`
baobeituping
  • 浏览: 1071662 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

DB4O操作的简单示例

 
阅读更多
package com.test;

import java.io.File;
import java.util.List;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.config.Configuration;
import com.db4o.io.CachedIoAdapter;
import com.db4o.io.RandomAccessFileAdapter;
import com.db4o.query.Constraint;
import com.db4o.query.Query;



public class Test {

/**
* @param args
*/
private static MessageDao messageDao = null;
    private static Configuration configuration = null;
    private static ObjectContainer db = null;
    private static String path= "./dat/JCNEP3161_chatHistory.db";
   
public Test()
{
configuration = Db4o.newConfiguration();
//      configuration.io(new RandomAccessFileAdapter());
configuration.io(new CachedIoAdapter(new RandomAccessFileAdapter()));
configuration.optimizeNativeQueries(true);
     
configuration.objectClass(MyMessage.class).objectField("from").indexed(true);
configuration.objectClass(MyMessage.class).objectField("to").indexed(true);
configuration.objectClass(MyMessage.class).objectField("body").indexed(true);

configuration.objectClass(MyMessage.class).objectField("date").indexed(true);
configuration.objectClass(MyMessage.class).objectField("date_time").indexed(true);
}
   
public static void main(String[] args) {



/* Test test = new Test();
test.openDB4O(path);
for(int i=0;i<30;i++)
{
MyMessage mm = new MyMessage();
mm.setBody("你好"+i);
mm.setDate("2010-07-"+i);
mm.setFrom("JCNEP4095");
mm.setFromName("张三");
mm.setTo("JCNEP3160");
mm.setToName("李四");
db.store(mm);
}

db.close();*/



Test test = new Test();
test.openDB4O(path);
/*
* 查询所有数据
* List<MyMessage> list = test.getAllMessage();
for(MyMessage mm : list)
{
System.out.println(mm.getFrom()+":"+mm.getTo()+":内容:"+mm.getBody()+":日期:"+mm.getDate());
}*/


/*
* 根据ID查询
* List<MyMessage> list = test.getMessageByID("JCNEP3160");
for(MyMessage mm : list)
{
System.out.println(mm.getFrom()+":"+mm.getTo()+":内容:"+mm.getBody()+":日期:"+mm.getDate());
}
*/

/*
* 根据BODY来查询
* List<MyMessage> list = test.getMessageByBody("我爱你2");
for(MyMessage mm : list)
{
System.out.println(mm.getFrom()+":"+mm.getTo()+":内容:"+mm.getBody()+":日期:"+mm.getDate());
}*/

List<MyMessage> list = test.getMessageByDate("2010-07-10","2010-07-20");
for(MyMessage mm : list)
{
System.out.println(mm.getFrom()+":"+mm.getTo()+":内容:"+mm.getBody()+":日期:"+mm.getDate());
}
}

//根据时间段查询
public List<MyMessage> getMessageByDate(String begin,String end)
{
List<MyMessage> mymessage=null;
Query query = this.db.query();
query.constrain(MyMessage.class);
//表示date字段大于等于开始时间,小于等于结束时间
query.descend("date").constrain(begin).greater().equal();
query.descend("date").constrain(end).smaller().equal();

ObjectSet objset = query.execute();
mymessage = objset;

return mymessage;

}

//根据body编码查询
public List<MyMessage> getMessageByBody(String body)
{
List<MyMessage> mymessage=null;
Query query = this.db.query();
query.constrain(MyMessage.class);

Constraint ct = query.descend("body").constrain(body);

ObjectSet objset = query.execute();
mymessage = objset;

return mymessage;

}

//根据ID编码查询
public List<MyMessage> getMessageByID(String To)
{
List<MyMessage> mymessage=null;
Query query = this.db.query();
query.constrain(MyMessage.class);
//表示DB文件中TO字段的值为To的数据 Constraint ct = query.descend("to").constrain(To);

ObjectSet objset = query.execute();
mymessage = objset;

return mymessage;

}
//查询所有DB中的数据
public List<MyMessage> getAllMessage()
{
List<MyMessage> mymessage=null;

Query query = this.db.query();
query.constrain(MyMessage.class);

ObjectSet objset = query.execute();
mymessage = objset;

return mymessage;
}

public static void openDB4O(String path) {
        File tempFile = new File(path);
        String tempStr = tempFile.getAbsolutePath();
        int index = tempStr.lastIndexOf(File.separatorChar);
        if (index > 0) {
            String path2 = tempStr.substring(0, tempStr.lastIndexOf(File.separatorChar));
            File file = new File(path2);
            if (!file.exists()) {
                file.mkdirs();
            }
        }
        db = Db4o.openFile(configuration, path);
    }

}
分享到:
评论

相关推荐

    Db4o的简单操作项目

    在“Db4o的简单操作项目”中,我们将探讨如何使用Db4o进行基本的数据操作,包括对象的持久化、查询以及事务管理。 首先,你需要访问db4o的官方网站(http://www.db4o.com)来获取最新的Db4o版本。下载完成后,将jar...

    db4o使用指南

    QBE 是一种基于示例的查询方式,开发者可以创建一个查询对象, db4o 将根据该对象的属性值来进行查询。 SODA 是一种简单的对象数据库访问方式,开发者可以使用 SODA 来执行基本的 CRUD 操作。 NQ 是 db4o 的主要...

    对象数据库db4o对象数据库db4o

    db4o(database for objects)是对象数据库的一种,它提供了对Java和.NET平台的完全支持,允许开发者以面向对象的方式来操作数据,极大地简化了数据管理和持久化的过程。 ### db4o概述 db4o的核心理念是“存储对象...

    db4o .net3.5

    作为一个开源项目,db4o拥有活跃的开发社区,提供了广泛的文档、示例和讨论论坛,帮助开发者解决问题并不断改进产品。 总的来说,db4o .net3.5是一个强大的工具,为.NET开发者提供了对象持久化的简便方法,通过上述...

    DB4O笔记+常用JAR包

    这个简单的示例展示了如何打开一个DB4O数据库,创建一个新的Person对象,将其保存到数据库,然后通过查询API获取并打印出该对象。 总的来说,DB4O作为一个对象数据库,为Java开发者提供了便捷的数据存储和检索方式...

    Db4o (net)类库

    2. **透明性**:Db4o与应用程序的集成非常平滑,对象的存取操作就像在内存中一样简单。对象的持久化、检索和更新都在后台自动完成。 3. **查询能力**:Db4o支持Lambdas表达式和LINQ(Language Integrated Query)...

    java数据库(db4o)

    Java数据库db4o,全称为“Database for Objects”,是一款开源的对象数据库系统,专门设计用于Java...在压缩包中的“db4o”文件可能包含了db4o的库文件、示例代码、文档等资源,可以帮助深入理解和使用这个数据库系统。

    db4o-5.0-tutorial-java帮助

    教程从db4o的基础概念入手,逐步引导用户了解db4o的工作原理和基本操作。建议初学者先浏览HTML教程,尝试运行其中的示例代码,以获得直观的学习体验。 #### 2. 深入学习 对于想要深入了解db4o特性和高级功能的...

    DB4o 数据库实例

    压缩包中的“DB4O测试”可能包含了一些示例代码,用于演示如何使用DB4o进行对象的存储、查询以及事务处理等操作。通过阅读和运行这些代码,你可以更深入地理解DB4o的工作原理和用法。 10. **整合VS2008**: 在VS...

    DB4O_.net

    在.NET环境中,db4o为开发人员提供了简单、高效的数据库解决方案,特别适合于快速构建小型桌面应用程序。这款数据库引擎的核心优势在于它的对象持久化能力,使得数据操作更接近于面向对象编程的思维方式。 标题中的...

    DB4o 将一个对象保存到文件中,然后查询读取

    `TestDBBean.java`示例展示了如何定义一个可持久化的对象类,而`Configuration.java`和`Db4o.java`则涉及到数据库的配置和操作。在实际项目中,结合这些知识,你可以构建出高效、易于维护的数据存储解决方案。

    DB4O,让文本文档做数据库的东东

    DB4O,全称为“Database for Objects”,是一个开源的对象数据库管理系统(ODBMS),它允许开发者直接将对象存储在文件...在提供的压缩包“db4o”中,可能包含了DB4O的库文件、示例代码或者文档,供进一步学习和使用。

    DB4O完整教程

    下面是关于DB4O的详细教程,包括打开数据库、插入记录、查询记录、更新对象和删除对象等操作。 打开数据库 在使用DB4O之前,需要首先打开数据库。如果不存在,则创建新数据库。下面是一个打开数据库的示例: ```...

    db4o管理工具,适用yap、db、data等数据库文件

    4. 示例数据库:用于展示如何操作和查询db4o数据库的示例文件。 5. 配置文件:可能包含工具的设置和配置信息。 使用db4o管理工具的主要知识点包括: 1. 对象数据库概念:理解对象数据库如何存储和检索对象,而不是...

    db4o面对对象数据库

    下面通过一个简单的示例来介绍如何使用db4o进行数据存储和检索操作。 ```java import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; public class FirstStepsExample { public ...

    面向对象的db40指南

    db4o是一款开源的对象数据库,它允许开发者直接以对象的形式存储和查询数据,从而简化了数据操作。 文章首先引出了持久化存储领域的发展,提到了ORM工具如Hibernate在简化对象与数据库交互方面的贡献,但也指出ORM...

Global site tag (gtag.js) - Google Analytics