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的可以到我的下載中心下載.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章