android - Room:查询失败的返回值是多少?
问题描述
考虑这个小型 Room 数据库:
@Entity
public class User {
@PrimaryKey
public int uid;
}
@Dao
public interface UserDao {
@Query("SELECT * FROM user WHERE uid == :uid")
User get(int uid);
}
数据库中不存在的UserDao.get
a的返回值是多少?uid
我可以可靠地测试没有给定的用户uid
吗?像这样:
if (userDao.get(17) == null) {
还是不鼓励这样查询数据库?我是否应该总是返回一个列表,即使对于最多可以返回一个数据库行的查询?因此,应该UserDao
如下所示:
@Dao
public interface UserDao {
@Query("SELECT * FROM user WHERE uid == :uid")
List<User> get(int uid);
}
解决方案
如果您查询一个对象并且它不存在于 DB 中,则 Room 返回 null。所以你的方法没问题,但始终确保不要在主线程中调用你的数据库。如果您查询一个列表,如果没有找到匹配的对象,则返回一个大小为 0 的列表。
推荐阅读
- javascript - 在 ES6 中选择某些值并按字母顺序排序
- javascript - 使用 ajax 向 Node.js 服务器发送 POST 请求
- php - Apache/PHP 响应时间和执行时间
- symfony - 如何使用 Api 平台过滤器过滤实体子资源
- javascript - 在多个函数中抛出相同 TypeError 的 DRY 方法
- c++ - “未定义的 _imp__ 引用”在 Eclipse 上使用 MinGW
- kubernetes - Kubernetes 删除 pod 作业
- sql - 将 nvarchar 中的属性映射到具有 int 数据类型的另一列
- python - Jupyter notebook 找不到 pyxlsb 模块
- oracle - 使用 JDBC 生成 PySpark Oracle 序列。阅读