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
implements IDb40Helper
{ 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
ts) { for (T t : ts) { objectContainer.store(t); } } /** * 采用回调的方式来查询结果 * 传入一个predicate对象,在其中书写条件即可 */ public List
get(Predicate
predicate) { return objectContainer.query(predicate); }; /* * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来. */ @Override public void update(Predicate
predicate , UpdateOperation
updateOperation) { List
resultSet = get(predicate); for (T t : updateOperation.updateOPeration(resultSet)) { objectContainer.store(t); } } @Override public void delete(Predicate
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
implements IDb40Helper
{ 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
ts) { for (T t : ts) { objectContainer.store(t); } } /** * 采用回调的方式来查询结果 * 传入一个predicate对象,在其中书写条件即可 */ public List
get(Predicate
predicate) { return objectContainer.query(predicate); }; /* * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来. */ @Override public void update(Predicate
predicate , UpdateOperation
updateOperation) { List
resultSet = get(predicate); for (T t : updateOperation.updateOPeration(resultSet)) { objectContainer.store(t); } } @Override public void delete(Predicate
predicate) { for (T t : objectContainer.query(predicate)) { objectContainer.delete(t); } } }

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

需要注意的问题是:

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

2)domain必须是标准的javabean

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

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