gpt4 book ai didi

android - 如何从Room SQLite数据库检索数据?

转载 作者:行者123 更新时间:2023-12-03 10:25:04 28 4
gpt4 key购买 nike

因此,我按照youtube上的教程创建了一个 session 室数据库。我有两天的专栏,每个专栏都喜欢int。目前,我已经用三行数据手动填充了数据库。
以下是用于手动填充数据库的代码:

@Database(entities = Recovery.class, version = 1, exportSchema = false)
public abstract class RecoveryDatabase extends RoomDatabase {

private static RecoveryDatabase INSTANCE;
public abstract RecoveryDao recoveryDao();

// Singleton
public static RecoveryDatabase getInstance(final Context context) {
if (INSTANCE == null) {
synchronized (RecoveryDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), RecoveryDatabase.class, "recovery_database").fallbackToDestructiveMigration().addCallback(roomCallback).build();
}
}
}
return INSTANCE;
}

private static RecoveryDatabase.Callback roomCallback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
new PopulateDbAsyncTask(INSTANCE).execute();
}
};

private static class PopulateDbAsyncTask extends AsyncTask<Void, Void, Void> {
private RecoveryDao recoveryDao;

private PopulateDbAsyncTask(RecoveryDatabase db) {
recoveryDao = db.recoveryDao();
}

@Override
protected Void doInBackground(Void... voids) {
// First input is the day and the second is the num of likes for that day
recoveryDao.insert(new Recovery(6,1));
recoveryDao.insert(new Recovery(7,2));
recoveryDao.insert(new Recovery(8,3));
return null;
}
}
}
在我的Dao类中,我目前有Insert,Update,deleteAll和getAll ...方法。
这是道:
@Dao
public interface RecoveryDao {

@Insert
void insert(Recovery recovery);

@Update
void update(Recovery recovery);


@Query("DELETE FROM recovery_table")
void deleteAllRecovery();

// Sends data from ascending day to the call. (1,2,3,4 ....)
@Query("SELECT * FROM RECOVERY_TABLE ORDER BY day ASC")
LiveData<List<Recovery>> getAllRecovery();
}
现在,我想根据日期从Room数据库中检索数据。因此,我希望第6天的喜欢次数为1。我想检索数据并将其存储到mainActivity中的int变量中。
因此,我的最终目标是在数据库中包含许多数据行,然后将其检索并将其存储到ArrayList中,但是我必须首先弄清楚如何首先检索数据。
我已经从stackover流中尝试了许多解决方案,但是我还没有弄清楚。 YT上的所有教程都使用Recycler View 和适配器,但我不会使用它们。
我对sqlite和MVVM非常陌生。感谢您的帮助!!!

最佳答案

尝试此查询,您需要在参数中传递日期。

@Query("SELECT * FROM RECOVERY_TABLE WHERE day=:day ORDER BY day ASC ")
LiveData<List<Recovery>> getRecoveryWithDay(int day);
这将为您提供具有匹配日期的Recovery列表,您可以根据需要将返回类型从 List<Recovery>更改为 LiveData<List<Recovery>>如果您发现任何错误,请告诉我。

关于android - 如何从Room SQLite数据库检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62971224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com