android - 如何检查 ROOM 数据库中的记录是否被删除?

标签 android sqlite android-sqlite android-room androidx

使用 SQLite 数据库,

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

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

但是,在 房间数据库

我们可以通过以下方式删除记录:
 @Delete
 void delete(Notes notes);

是否有任何选项可以检查记录是否已删除?

最佳答案

您可以简单地定义一个 Int返回类型为 @Delete方法。返回的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

关于android - 如何检查 ROOM 数据库中的记录是否被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448287/

相关文章:

android - 如何从我的应用程序注销并在 android 上刷新?

android - WebView 下载会在返回 WebView 之前短暂打开浏览器窗口

python - 如何使用默认数据库以外的数据库

iOS 共享扩展 - 如何访问核心数据

java - 使用 Eclipse 访问现有的 SQLite 数据库

java - 如何分离 TextView 以仅影响一个 TextView ?

sqlite - 我如何重置 Superset 的数据库?

android - 使用游标查询我的数据库

Android - 尝试重新打开一个已经关闭的对象 : SQLiteQuery using loaderManager

android - 如何在 linux 内核模式下将 '\n' 传递到文件中