2017-09-22 12 views
0

私はSQLクエリの他の解決策を調べます。私は私の問題に適した解決策を見つけることができません。ルームライブラリでクエリを作成して更新する方法は?

私のプロジェクトでは、私はテーブルにデータを挿入しています。私はいくつかの手順に従わなければならない Step1: - データが利用可能かどうかをプライマリキーでチェックする必要があります。 ステップ2:データが利用可能な場合、そのデータを更新して応答コードを返す必要があります。そうでない場合は、手順3に進む必要があります。 手順3:データがテーブルにない場合は、データを挿入してコードを返します。

私はルームライブラリを使用しています。私はその仕事を行うために@Daoに書き込む方法を混乱させる。事前に

おかげで

答えて

0

Androidのアーキテクチャのコンポーネントは、SQLiteのAndroidのデータベースを処理するための最良のあるAndroidのルーム永続ライブラリを導入しました。 Entity in Room Persistenceはデータベーステーブルを表し、Daoはデータベース相互作用を定義する場所です。このテーブルの例

@Entity 
public class Trail { 
     public @PrimaryKey String id; 
     public String name; 
     public double kilometers; 
     public int difficulty; 
} 

可能ダオは

@Dao 
public interface TrailDao { 

     @Insert(onConflict = IGNORE) 
     void insertTrail(Trail trail); 

     @Query("SELECT * FROM Trail") 
     List<Trail> findAllTrails(); 

     @Update(onConflict = REPLACE) 
     void updateTrail(Trail trail); 

     @Query("DELETE FROM Trail") 
     void deleteAll(); 
    } 

になりますさらに、あなたは

@Database(entities = {Trail.class}, version = 1) 
public abstract class AppDatabase extends RoomDatabase { 

    private static AppDatabase INSTANCE; 

    public abstract TrailDao trailDao(); 

    public static AppDatabase getInMemoryDatabase(Context context) { 
     if (INSTANCE == null) { 
      INSTANCE = 
Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class) 

        .allowMainThreadQueries() 
        .build(); 
     } 
     return INSTANCE; 
    } 

    public static void destroyInstance() { 
     INSTANCE = null; 
    } 
} 

例、RoomDatabase実装を提供する必要があります応答が何であるかを

AppDatabase. getInMemoryDatabase(context).trailDao().findAllTrails(); 
+0

のようにそれを使用します挿入および更新後のコード –

+0

@PrinceKumar戻り値の型はvoidです。 –

+0

あなたのコードの戻り値の型に応じてvoid型をサポートしますが、戻り値が1の場合はデータが更新され、そうでない場合は更新されません –

関連する問題