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

Rjz*_*ara 7 sqlite android 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
}
Run Code Online (Sandbox Code Playgroud)

但是,在 房间数据库中

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

 @Delete
 void delete(Notes notes);
Run Code Online (Sandbox Code Playgroud)

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

the*_*e64 9

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

例子

产品道.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

}
Run Code Online (Sandbox Code Playgroud)

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

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

// multiple rows
val isDeleted = productsDao.delete(productList) == productList.size
Run Code Online (Sandbox Code Playgroud)