I'm trying to create a generic helper class for db4o.
I created a static class which should work as helper in each applications pages.
Here is my code:
public final class DatabaseHelper implements IDatabaseHelper{
private static ObjectContainer database;
private static final String DATABASE_NAME = "MyDB.db4o";
private static final int DATABASE_MODE = 0;
private static Context ctx;
private DatabaseHelper(){
}
public DatabaseHelper(Context context) {
ctx=context;
database=null;
}
public void OpenDatabse(){
try {
if (database == null) {
EmbeddedConfiguration nc = Db4oEmbedded.newConfiguration();
database = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(),
db4oDBFullPath());
}
} catch (Exception ie) {
Log.e(DatabaseHelper.class.getName(), ie.toString());
}
}
private String db4oDBFullPath() {
return ctx.getDir("data", DATABASE_MODE) + "/" + DATABASE_NAME;
}
public void CloseDatabase() {
if (database != null) {
database.close();
}
}
public ObjectContainer getDatabaseSession() {
return database.ext().openSession();
}
}
My problem is in the OpenDatabase()
method. I always got
com.db40.ext.Db4oException: File format incompatible: '/data/data/personal.pier.appname/app_data/MyDB.db4o'
I tried adding/removing the final attribute. I tried calling it step by step. I'm new to db4o and I don't really know how to do it.
More generally, is it possible to create a general helper class? Any help will be appreciated. Thanks