Android 数据库存储之db4o

在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语句,使用方便;

你可能感兴趣的:(android)