2

特定の条件に基づいてクエリを作成する方法を教えてください。

私はこれをやってみました

QueryBuilder builder = SQlite.Select().from(Table)
    if(condition) {
         builder.where(something)
    }
Cursor c = builder.query;

しかし、それは許可されていません。

設定に保存した条件でデータベースにクエリを実行する必要があります。ドキュメントのあらゆる場所をグーグルで検索しましたが、単一の例が見つかりませんでした。はいの場合、この機能は dbflow に存在しますか? いいえの場合、この機能を備えた他の orm (greenDAO など) を介してどのように機能しますか?

4

2 に答える 2

3

DBFlow で条件付きクエリを作成できます。テーブルの列をクエリする_Tableには、クラス名に追加してから、そのプロパティにアクセスする必要があります。これらの_Tableクラスはビルド時に生成されます。

最も単純なクエリは次のとおりです。

SQLite.select()
      .from(YourTable.class)
      .where(YourTable_Table.id.eq(someId)
      .queryList();

クエリで.andandを使用して、新しい条件を追加することもできます。.or

SQLite.select()
      .from(YourTable.class)
      .where(YourTable_Table.id.eq(someId)
      .and(YourTable_Table.name.eq(someName)
      .queryList();

コードをよりクリーンにするために、次のように条件を条件グループにグループ化することもできます。

ConditionGroup conditionGroup = ConditionGroup.clause();
conditionGroup.and(YourTable_Table.id.eq(someId);

if (someCondition) {
    conditionGroup.and(YourTable_Table.name.eq(someName);
}

return SQLite.select()
      .from(YourTable.class)
      .where(conditionGroup)
      .queryList();
于 2016-09-08T17:01:21.440 に答える