0

私は 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;
}

また、db4oHelper クラスを拡張する EventProvider クラスもあります。オブジェクトを保存および取得するためのコードが記述されている場所。これは、複数のオブジェクトがあっても 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;
    }

だから今私は金曜日のイベントを取得する関数を作成しました。

また、この機能をより多くの日、たとえば金曜日、土曜日、日曜日に機能させたいと思います。しかし、関数で文字列を渡すと、新しい述語関数では使用できません。

このようなもの:

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;
    }
4

2 に答える 2

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 でキャッチします。

于 2013-05-22T15:03:14.617 に答える