【问题标题】:Android Room Database Delete Query Not Removing Any RowsAndroid房间数据库删除查询不删除任何行
【发布时间】: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


【解决方案1】:

根据@Faisal 对该问题的评论。我忘记在后台线程中运行我的删除方法。

我将删除代码移到了 AsyncTask 中,现在它可以工作了。这是存储库功能任务:

private static class deleteAsyncTask extends AsyncTask<Void, Void, Void> {

    private MessageDao mAsyncTaskDao;
    private String mPhoneNumber = null;

    public deleteAsyncTask(MessageDao dao) {
        mAsyncTaskDao = dao;
    }

    public deleteAsyncTask(MessageDao dao, String phoneNumber) {
        mAsyncTaskDao = dao;
        mPhoneNumber = phoneNumber;
    }


    @Override
    protected Void doInBackground(Void... voids) {
        if (mPhoneNumber == null) {
            mAsyncTaskDao.deleteAll();
        }
        else {
            mAsyncTaskDao.delete(mPhoneNumber);
        }
        return null;
    }
}

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2020-03-11
    相关资源
    最近更新 更多