在Android中,使用数据库除了可以使用Android内嵌的SQLite,还可以使用db4o
db4o是嵌入式的面向对象的数据库,是基于对象的数据库,操作的数据本身就是对象。
特点:
对象以其本身的方式来存储,没有错误匹配问题;
自动管理数据模式;
存储时不改变数据类特征;
自动绑定数据;
查询时直接获取到所查询的对象的实例
下边是一个db4o数据库操作实例类,使用时需要先下载db4o支持jar包,解压缩得到db4o-8.0.249.16098-core-java5.jar文件,加入工程;
Db4oEmbedded.openFile(EmbeddedConfiguration config, String databaseFileName);// 获取数据库api
public class DBHelper { // db4o创建与打开与sqlite类似,在数据库不存在时先创建一个db4o数据库,然后再打开数据库,如果数据库已存在,直接打开数据库; ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "/sdcard/db4o.data"); /* * 添加student对象,调用ObjectContainer.store()方法保存,需要调用commit方法才会真正保存到数据库中; */ public void addStudent(Student student) { db.store(student); db.commit(); } /* * 查询java对象也需要指定一个同类型的java对象,如果想枚举保存在数据库中同一个类所有的对象,可以使对象中的变量值都保持默认值; */ public List<Student> getStudents() { // queryByExample方法的参数是一个保持默认变量值的student对象 ObjectSet<Student> result = db.queryByExample(new Student()); List<Student> list = new ArrayList<Student>(); while (result.hasNext()) { Student stu = result.next(); list.add(stu); } return list; } /* * 如果想查询某一个Student对象,可以指定对象中的任何一个或多个变量值 */ public Student getStudent() { ObjectSet<Student> result = db.queryByExample(new Student("new_name", null)); // 查询name为"name";id为"id"的对象, while (result.hasNext()) { return result.next(); } return null; } /* * 更新类似于插入数据,需要调用ObjectContainer.store方法,但首先需要获得更新的对象 */ public void update() { ObjectSet<Student> result = db.queryByExample(new Student("name0", null)); if (result.hasNext()) { Student stu = result.next(); stu.setName("new_name"); db.store(stu); db.commit(); } } /* * 删除对象也需要首先获取要删除的对象 */ public void delete() { ObjectSet<Student> result = db.queryByExample(new Student("name1", null)); if (result.hasNext()) { db.delete(result.next()); db.commit(); } } }
Student.java 一个javabean对象,包含两个字段name和id,和相关的get/set方法;
public class Student { private String name; private String id; }
通过上面的五个方法,可以很明显的看出,所有的操作都是基于对对象的操作,CRUD...
而且操作比较简单,不需要sql语句,使用方便;