gpt4 book ai didi

android - 如何使用 Android Room 进行单行查询

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:29 25 4
gpt4 key购买 nike

如何使用 RxJava 使用 Android Room 进行单行查询?我能够查询项目列表,没有问题。在这里,我想查找特定行是否存在。根据文档,如果不存在任何行,看起来我可以返回 Single 并检查 EmptyResultSetException 异常。

我可以有这样的东西:

@Query("SELECT * FROM Users WHERE userId = :id LIMIT 1")
Single<User> findByUserId(String userId);

如何使用此调用?看起来有一些 onError/onSuccess 但在 Single<> 上找不到这些方法。

usersDao.findByUserId("xxx").???

任何工作示例都会很棒!

最佳答案

According to the docs, looks like I can return Single and check for EmptyResultSetException exception if no row exists.

或者,如果您正在通过其他方式处理后台线程,则只需返回 User

@Query("SELECT * FROM Users WHERE userId = :id")
User findByUserId(String id);

How do I use this call?

usersDao.findByUserId("xxx")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> { ... }, error -> { ... });

在这里,我展示了 subscribe() 采用两个 lambda 表达式,用于 User 和错误。您可以改用两个 Consumer 对象。我还假设您将 rxandroid 作为 AndroidSchedulers.mainThread() 的依赖项,并且您希望将 User 传递给您线程。

IOW,您可以像使用 RxJava 中的任何其他 Single 一样使用它。详细信息将根据您的需要而有所不同。

关于android - 如何使用 Android Room 进行单行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49825789/

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