gpt4 book ai didi

java - 如何检查房间数据库是否为空

转载 作者:行者123 更新时间:2023-12-02 01:23:47 26 4
gpt4 key购买 nike

我试图在进行网络调用之前检查房间数据库是否为空。但它显示以下错误。

error: Not sure how to convert a Cursor to this method's return type (java.lang.Integer).

我一直在做的是,当应用程序启动时,我检查房间数据库中的行数,如果它为空,那么我将进行网络调用。

下面是我的代码。

UserDao.java

@Dao
public interface UserDao {

@Query("SELECT * FROM Users")
LiveData<Integer> isDbEmpty();
}

UserRepository.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;
}

}

UserViewModel.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 上的返回类型应该是LiveData<List<User>>选择后只需检查该查询返回的列表的大小。

当你输入Integer时查询是 SELECT从该表中,Room不知道怎么办User表匹配 Integer

   @Query("SELECT * FROM Users")
LiveData<List<User>> selectAllUsers();

当你调用该方法时,只需检查 if(usersList.size() != 0){}

关于java - 如何检查房间数据库是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57266553/

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