java - 如何检查房间数据库是否为空
问题描述
我正在尝试在拨打网络电话之前检查房间数据库是否为空。但它显示以下错误。
错误:不确定如何将 Cursor 转换为此方法的返回类型 (java.lang.Integer)。
我一直在做的是,当应用程序启动时,我正在检查房间数据库中的行数,如果它为空,那么我正在进行网络调用。
下面是我的代码。
用户道.java
@Dao
public interface UserDao {
@Query("SELECT * FROM Users")
LiveData<Integer> isDbEmpty();
}
用户存储库.java
public class UserRepository {
private Context context;
private UserDb userDb;
private LiveData<Integer> checkDb;
private UserDao userDao;
public UserRepository(Context context) {
this.context = context;
userDb = UserDb.getInstance(context);
userDao = userDb.userDao();
checkDb = userDao.isDbEmpty();
}
public LiveData<Integer> isDbEmpty(){
return checkDb;
}
}
用户视图模型.java
public class UserViewModel extends AndroidViewModel {
private UserRepository repo;
private LiveData<Integer> checkDb;
public UserViewModel(@NonNull Application application) {
super(application);
repo = new UserRepository(application);
checkDb = repo.isDbEmpty();
}
public LiveData<Integer> getCheckDb() {
return checkDb;
}
}
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
userRepository = new UserRepository(this);
userModel = ViewModelProviders.of(MainActivity.this).get(UserViewModel.class);
userModel.getCheckDb().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer rowCount) {
if(rowCount == 0){
userRepository.getUserList();
}
}
});
}
有人请让我知道我做错了什么。任何帮助,将不胜感激。
谢谢
解决方案
您的返回类型UserDao
应该是 aLiveData<List<User>>
并且在选择之后只需检查从该查询返回的列表的大小。
当您Integer
输入并且查询SELECT
来自该表时,Room
不知道该User
表如何匹配Integer
@Query("SELECT * FROM Users")
LiveData<List<User>> selectAllUsers();
而不是当你调用该方法时,只需检查if(usersList.size() != 0){}
推荐阅读
- java - 如何通过仅使用一个 if 语句输入 1 到 7 之间的数字来找到今天是哪一天?
- google-cloud-platform - 是否可以为 GKE 部署分配保留的公共 IP 以用于出口流量?
- python - 通过 udp 接收消息,延迟 python
- tensorflow - TensorFlow JS (React Native) 空响应
- c# - Azure B2C:调用 Asp.Net Web.API 的 Asp.Net Web API
- android - 保存用户凭据
- spss - iGroup Presence Questionnaire (IPQ) – SPSS Spider / Radar Chart
- python - 在 Python 中查找所需的数字
- spring-boot - ehcache 在应用程序级别或 jvm 级别有效吗
- sql - 具有 3 个表的 PIVOT 和没有数字值的 JOIN