db4o数据库的基本操作

db4o数据库的基本操作对db4o(面向对象的数据库)的基本操作: 数据库的链接:privatestaticObjectContainerdb; finalstaticStringDB4OFILENAME=System.getProperty("user.dir") +"/database.db4o"; static{ db=Db4oEmbedde…

大家好,又见面了,我是你们的朋友全栈君。

对db4o(面向对象的数据库)的基本操作:

 

数据库的链接:

private static ObjectContainer db;
	
	final static String DB4OFILENAME = System.getProperty("user.dir")
			+ "/database.db4o";
	
	static{
		db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
	}

 数据库存储:

public void store(Object obj) {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		try {
			db.store(obj);
		} finally {
			db.close();
		}
	}

 数据的查询,更新,和删除操作:

public void queryObject() {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		List<Person> persons = null;
		try{
			persons = db.query(new Predicate<Person>() {
				private static final long serialVersionUID = 1L;
	
				public boolean match(Person person) {
//					return "Allen".equals(person.getName());//根据特定的条件查询数据
					return true;//查询数据库中对应表中所有的数据,此处为person表
				}
			});
			for(Person per : persons) {
				System.out.println(per.getName()+" : " + per.getPassword());
			}
			Person person = persons.get(0);
			System.out.println(person);
			person.setName("Person");
			db.store(person);
//			db.delete(person);
			System.out.println("==================");
			for(Person per : persons) {
				System.out.println(per.getName()+" : " + per.getPassword());
			}
		} finally {
			db.close();
		}
	}

 完整的代码:

Person

public class Person {
	private String id;
	private String name;
	private String password;
	
	public Person(String id, String name, String password) {
		this.id = id;
		this.name = name;
		this.password = password;
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 Operation

import java.util.List;

import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.eight.study.bean.Person;
import com.db4o.query.Predicate;
import com.db4o.query.Query;

public class Operation {
	
//	private static ObjectContainer db;
	
	final static String DB4OFILENAME = System.getProperty("user.dir")
			+ "/database.db4o";
	
//	static{
//		db = Db4oEmbedded.openFile(
//				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
//	}
	
//	public static ObjectContainer DB4oConnection() {
//		return db;
//	}

	//db4o 数据库存储对象
	public void store(Object obj) {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		try {
			db.store(obj);
		} finally {
			db.close();
		}
	}

	//db4o 数据库进行查询,第一种查询方法
	public void queryObject() {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		List<Person> persons = null;
		try{
			persons = db.query(new Predicate<Person>() {
				private static final long serialVersionUID = 1L;
	
				public boolean match(Person person) {
//					return "Allen".equals(person.getName());//根据特定的条件查询数据
					return true;//查询数据库中对应表中所有的数据,此处为person表
				}
			});
			for(Person per : persons) {
				System.out.println(per.getName()+" : " + per.getPassword());
			}
			Person person = persons.get(0);
			System.out.println(person);
			person.setName("Person");
			db.store(person);
//			db.delete(person);
			System.out.println("==================");
			for(Person per : persons) {
				System.out.println(per.getName()+" : " + per.getPassword());
			}
		} finally {
			db.close();
		}
	}
	
	//db4o 数据库进行查询,第二种查询方法
	public void queryObject(String name) {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		List<Person> persons = null;
		try{
			Query query = db.query();
			query.constrain(Person.class);
			query.descend("name").constrain(name);
			persons = query.execute();
			System.out.println(persons.get(0).getName()+" : " + persons.get(0).getPassword());
		} finally {
			db.close();
		}
	}
	
	//db4o 删除一个对象
	public void deleteObject(Object obj) {
		ObjectContainer db = Db4oEmbedded.openFile(
				Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		try {
			db.delete(obj);
		} finally {
			db.close();
		}
	}

	public static void main(String[] args) {
		System.out.println(DB4OFILENAME);
		Operation op = new Operation();
//		Person person = new Person("000001", "Allen", "123456");
//		Person person1 = new Person("000002", "Jeson", "654321");
//		Person person2 = new Person("000003", "Aimi", "234156");
//		op.store(person);
//		op.store(person1);
//		op.store(person2);
		op.queryObject();
//		op.queryObject("Aimi");
//		op.deleteObject(person2);
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162573.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java课设选题_基于javaweb的课程设计

    java课设选题_基于javaweb的课程设计Java课程设计1.题目及要求基于学校的搜索引擎负责部分:JavaGUI设计2.界面调查1)调查界面:百度2)思考:根据我的调查,我认为我需要完成三个界面的设计:第一个是调查主界面,里面有一个集美大学的logo,一个搜索框用文本字段,因为需要在里面写入搜索内容,一个搜索按钮用button,这个按钮完成的功能就是输入搜索内容后,点击搜索按钮,可以跳转到下一个界面,并且返回结果。第二个界面是搜索结…

    2025年5月31日
    4
  • OpenCV-Python实战(1)——OpenCV简介与图像处理基础

    OpenCV-Python实战(1)——OpenCV简介与图像处理基础OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时也提供了Python接口,实现了图像处理和计算机视觉方面的很多通用算法。在本文中,将介绍OpenCV库,包括它的主要模块和典型应用场景,同时使用OpenCV-Python实战讲解图像处理基础要点。

    2022年5月13日
    42
  • android退出app的方法,Android 实现彻底退出自己APP 并杀掉所有相关的进程[通俗易懂]

    android退出app的方法,Android 实现彻底退出自己APP 并杀掉所有相关的进程[通俗易懂]彻底杀掉App相关进程的代码publicvoidkillAppProcess(){//注意:不能先杀掉主进程,否则逻辑代码无法继续执行,需先杀掉相关进程最后杀掉主进程ActivityManagermActivityManager=(ActivityManager)CurrentActivity.this.getSystemService(Context.ACTIVITY_SERVIC…

    2022年7月17日
    18
  • wxPython 入门教程.

    wxPython 入门教程.这篇文章是关于wxPython,但wxPython实际是两件事物的组合体:Python脚本语言和GUI功能的wxWindows库(关于wxWindows的介绍,请参阅developerWorks上的[“细述wxWindows”](http://www.ibm.com/developerworks/cn/linux/sdk/python/wxwin/index.html))。wxWindows库是为了最大可移植性的C/C++库,而抽取GUI功能。所以wxWindow

    2022年5月11日
    36
  • centos 如何退出vim

    centos 如何退出vimHowtoexittheVimeditor?点击ESC进入“正常模式”,然后输入“:”,进入“命令模式”。此时屏幕的下方会出现一个冒号,你可以输入以下命令,并按“ENTER”执行::q,退出(:quit的缩写):q!,退出且不保存(:quit!的缩写):wq,保存并退出:wq!,保存并退出即使文件没有写入权限(强制保存退出):x,保存并退出(类似:wq,但是只有在有更改的情况下才保存):exit,保存并退出(和:x相同):qa,退出所有(:quitall的缩写)

    2022年5月23日
    42
  • S3C2440C语言点灯[通俗易懂]

    S3C2440C语言点灯[通俗易懂]第一代程序员使用机器码第二代程序员使用汇编第三代程序员使用C语言C语言相较于汇编和机器码是一个更高级的语言,我们使用的技术也应该与时俱进之前控制寄存器是配置GPFCON和GPFDAT寄存器,通过地址访问,所以可以用C语言来进行对地址的访问。GPFCON——0x5600,0050GPFDAT——0x5600,0054目录S3C2440芯片手册导读用指针表示S3C2440芯片手册导读对于GPFCON,只用到了16位对于GPFDAT,只用到了8位我们仍然可以以32位,就是4字节的

    2022年6月13日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号