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,布布扣,bubuko.com
原文:http://welcone.blog.51cto.com/5430968/1377322