【发布时间】:2019-03-11 23:47:53
【问题描述】:
我已经创建了一个 Room 数据库来在聊天应用中存储消息,并且已经定义了这样的表:
@Entity(tableName = "message_table")
public class Message {
@NonNull
@PrimaryKey(autoGenerate = true)
public long id;
@NonNull
public String body;
@NonNull
@ColumnInfo(name = "phone_number")
public String phoneNumber;
public Message(String body, String phoneNumber) {
this.body = body;
this.phoneNumber = phoneNumber;
}
}
当我查询给定电话号码的所有消息时,它可以完美地检索它们(使用以下查询):
@Query("SELECT * FROM message_table WHERE phone_number = :phoneNumber LIMIT 50")
LiveData<List<Message>> getMessagesByNumber(String phoneNumber);
但是,当我尝试使用以下命令删除与完全相同的电话号码关联的所有消息时,每次都会删除 0 行:
@Query("DELETE FROM message_table WHERE phone_number = :phoneNumber")
int delete(String phoneNumber);
我在这里遗漏了什么吗?我环顾四周,但似乎无法找到解决方案。 (我已经四次检查了 Select 和 Delete 调用中使用的电话号码是 100% 相同的字符串)。
【问题讨论】:
-
你能上传你的数据库初始化代码吗,比如你从哪里调用你的删除查询?确认您在后台线程中实际执行的另外 1 件事?
-
@Faisal 感谢您的评论!这是后台线程。我试图从 UI 线程中删除。我移动了我的存储库删除功能以使用 AsyncTask 进行删除调用并修复了它。再次感谢。
标签: java android sqlite android-room