android 面向对象数据库 db40使用demo

android面向对象数据库db40日趋成熟.这里简单写了一个demo供大家参考.

首先,定义了一个操作数据库的带泛型T的接口.这一步并不是必须的,但是有通用的好处.


package cn.welcone.mobileguarder.dao;
import java.io.File;
import java.util.List;
import android.app.Application;
import android.content.Context;
import cn.welcone.mobileguarder.MyApplication;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Predicate;
public  class BaseDb40Helper<T>  implements IDb40Helper<T>{
    private   ObjectContainer objectContainer;
    private   Context context;
                                                                                                                               
    public  String  getDB4Path(String databaseName){
        return  new File(context.getExternalFilesDir(null),databaseName+".data").getPath();
    }
                                                                                                                               
    public BaseDb40Helper( Context context,String databaseName) {
        this.context = context;
        objectContainer = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), getDB4Path(databaseName));
    }
    @Override
    public void add(List<T> ts) {
        for (T t : ts) {
            objectContainer.store(t);
        }
    }
    /**
     * 采用回调的方式来查询结果
     * 传入一个predicate对象,在其中书写条件即可
     */
    public List<T> get(Predicate<T> predicate) {
        return objectContainer.query(predicate);
    };
     /*
     * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来.
     */
    @Override
    public void update(Predicate<T> predicate , UpdateOperation<T> updateOperation) {
        List<T> resultSet = get(predicate);
        for (T t : updateOperation.updateOPeration(resultSet)) {
            objectContainer.store(t);
        }
    }
    @Override
    public void delete(Predicate<T> predicate) {
        for (T t : objectContainer.query(predicate)) {
            objectContainer.delete(t);
        }
    }
                                                                                                                               
}

然后,写了一个实现类

package cn.welcone.mobileguarder.dao;
import java.io.File;
import java.util.List;
import android.app.Application;
import android.content.Context;
import cn.welcone.mobileguarder.MyApplication;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Predicate;
public  class BaseDb40Helper<T>  implements IDb40Helper<T>{
    private   ObjectContainer objectContainer;
    private   Context context;
                                                                                                                           
    public  String  getDB4Path(String databaseName){
        return  new File(context.getExternalFilesDir(null),databaseName+".data").getPath();
    }
                                                                                                                           
    public BaseDb40Helper( Context context,String databaseName) {
        this.context = context;
        objectContainer = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), getDB4Path(databaseName));
    }
    @Override
    public void add(List<T> ts) {
        for (T t : ts) {
            objectContainer.store(t);
        }
    }
    /**
     * 采用回调的方式来查询结果
     * 传入一个predicate对象,在其中书写条件即可
     */
    public List<T> get(Predicate<T> predicate) {
        return objectContainer.query(predicate);
    };
     /*
     * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来.
     */
    @Override
    public void update(Predicate<T> predicate , UpdateOperation<T> updateOperation) {
        List<T> resultSet = get(predicate);
        for (T t : updateOperation.updateOPeration(resultSet)) {
            objectContainer.store(t);
        }
    }
    @Override
    public void delete(Predicate<T> predicate) {
        for (T t : objectContainer.query(predicate)) {
            objectContainer.delete(t);
        }
    }
                                                                                                                           
}


最后使用的时候,将BaseDb40Helper new出来即可.

需要注意的问题是:

1)需要下载db40支持的jar包.加到libs下面即可使用

2)domain必须是标准的javabean

参考文档在下载包doc目录下.

需要该demo的可以到我的下载中心下载.

android 面向对象数据库 db40使用demo,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。