如何在房间库中编写创建和更新查询?
How write Create and Update Query in Room Library?
我通过SQL查询其他解决方案。我无法为我的问题找到 suitable 解决方案。
在我的项目中,我将数据插入 table。我必须遵循一些步骤
第 1 步:- 我必须通过主键检查数据是否可用。
第 2 步:如果数据可用,那么我必须更新该数据和 return 响应代码。如果不是我必须去第3步
第 3 步:如果数据不在 table 中,则将数据插入其中并 return 代码。
我正在使用房间图书馆。我很困惑如何在@Dao 中编写来执行该任务。
提前致谢
Android 引入了架构组件 Android Room Persistence Library,最适合 sqlite android 数据库处理。 Room Persistence 中的实体代表一个数据库 table 而 Dao 是我们定义数据库交互的地方。示例
@Entity
public class Trail {
public @PrimaryKey String id;
public String name;
public double kilometers;
public int difficulty;
}
此 table 的可能 Dao 将是
@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();
}
此外,您需要提供 RoomDatabase 实现,示例
@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;
}
}
像
一样使用它
AppDatabase. getInMemoryDatabase(context).trailDao().findAllTrails();
我通过SQL查询其他解决方案。我无法为我的问题找到 suitable 解决方案。
在我的项目中,我将数据插入 table。我必须遵循一些步骤 第 1 步:- 我必须通过主键检查数据是否可用。 第 2 步:如果数据可用,那么我必须更新该数据和 return 响应代码。如果不是我必须去第3步 第 3 步:如果数据不在 table 中,则将数据插入其中并 return 代码。
我正在使用房间图书馆。我很困惑如何在@Dao 中编写来执行该任务。
提前致谢
Android 引入了架构组件 Android Room Persistence Library,最适合 sqlite android 数据库处理。 Room Persistence 中的实体代表一个数据库 table 而 Dao 是我们定义数据库交互的地方。示例
@Entity
public class Trail {
public @PrimaryKey String id;
public String name;
public double kilometers;
public int difficulty;
}
此 table 的可能 Dao 将是
@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();
}
此外,您需要提供 RoomDatabase 实现,示例
@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;
}
}
像
一样使用它AppDatabase. getInMemoryDatabase(context).trailDao().findAllTrails();