【问题标题】:How to check whether record is delete or not in ROOM Database?如何检查 ROOM 数据库中的记录是否被删除?
【发布时间】:2018-11-23 14:14:50
【问题描述】:

使用 SQLite DB,

db.delete 将返回一个 long 值,即新行的行 ID,如果发生错误,则返回 -1。 因此,您可以通过以下方式检查它以了解删除是否成功:

int result = db.delete(TABLE_NAME, COLUMN_ID + " = ?",
                new String[]{String.valueOf(id)});
if(result != -1){
  // Deleted successful
}

但是,在ROOM DB

我们可以通过以下方式删除记录:

 @Delete
 void delete(Notes notes);

有没有选项可以检查记录是否被删除?

【问题讨论】:

  • developer.android.com/training/data-storage/room/… 该 URL 建议您可以从 delete 方法返回一个 Int 值,但它会返回它在该操作中删除的行数。但除此之外,您可以再次查询数据库以获取您要确认其是否已删除的记录。

标签: android sqlite android-sqlite android-room androidx


【解决方案1】:

您可以简单地为@Delete 方法定义一个Int 返回类型。返回的Int 将是删除的行数。 (0 如果没有删除任何内容)

示例

ProductsDao.kt

@Dao
interface ProductsDao {

    /**
     * To delete one or more products.
     * Returns number of rows deleted. 0 if no row deleted.
     */
    @Delete
    fun delete(vararg products: Product): Int // This is what you want

}

我会检查该行是否像这样删除

// one row
val isDeleted = productsDao.delete(product) == 1

// multiple rows
val isDeleted = productsDao.delete(productList) == productList.size

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多