我正在制作一个 android 项目并且在 Java 方面没有太多经验。所以我现在能够将对象存储在 db4o 数据库中,我也可以检索所有这些对象。但是,如果我想获得特定项目的列表,则只有 1 个项目返回(即使有更多)。
我将向您展示我拥有的代码:
这是访问数据库的代码,这应该可以工作。它是 db4oHelper 类中的一个函数
public ObjectContainer db() {
Log.i(Db4oHelper.class.getName(), "Accessing Database...");
if ((Db4oHelper.objectContainer == null) || ((Db4oHelper.objectContainer != null) && Db4oHelper.objectContainer.ext().isClosed())) {
Toast.makeText(this.context, "Creating DB Config", Toast.LENGTH_SHORT).show();
EmbeddedConfiguration c = Db4oEmbedded.newConfiguration();
c.common().objectClass(Event.class).cascadeOnUpdate(true);
c.common().objectClass(Event.class).cascadeOnActivate(true);
c.common().allowVersionUpdates(true);
c.common().detectSchemaChanges(true);
c.common().messageLevel(2);
Db4oHelper.objectContainer = Db4oEmbedded.openFile(c, db4oDBFullPath(this.context));
}
return Db4oHelper.objectContainer;
}
而且我还有一个类 EventProvider,它扩展了 db4oHelper 类。编写代码以存储和获取对象的位置。这是即使有更多对象也只返回 1 个对象的函数。(我是从 db4o 教程 pdf 的示例中制作的)
public List eventsFriday()
{
//function to get events by day (ex all events of friday)
List <Event> events = db().query(new Predicate<Event>() {
public boolean match(Event event) {
return event.getDay().equals("friday");
}
});
return events;
}
所以现在我制作了获取星期五事件的功能,目前有 2 个。但它只返回 1 个。有人知道吗?
我也想让这个功能工作更多天,例如周五、周六和周日。但是如果我通过函数传递一个字符串,我就不能在新的谓词函数中使用它。
像这样的东西:
public List eventsByDay(**String day**)
{
//function to get events by day (ex all events of friday)
List <Event> events = db().query(new Predicate<Event>() {
public boolean match(Event event) {
return event.getDay().equals(**day**);
}
});
return events;
}