我正在制作一个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.任何人的想法?
我也想让这个功能工作多天,例如星期五,星期六和星期日。但如果我传递一个带有该函数的String,我就无法在新的Predicate函数中使用它。
类似的东西:
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;
}
答案 0 :(得分:1)
如果声明 final ,您可以使用 day :
public List eventsByDay(final 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;
}
答案 1 :(得分:0)
好的,所以我一直在寻找和尝试很多,而且我找到了适合现在的东西。将来必须做进一步的测试。
public List eventsByDayTest(final String day)
{
//function to get events by day (ex all events of friday)
Query query=db().query();
query.constrain(Event.class);
query.descend("Day").constrain(day);
ObjectSet result=query.execute();
return result;
}
然后我在android上的活动类的List中捕获返回结果。