如何使用房间持久性库删除特定表上的所有条目? 我需要删除表,但我无法找到如何做到这一点的任何信息。
仅当数据库正在迁移或加载所有条目并删除它们:)
如何使用房间持久性库删除特定表上的所有条目? 我需要删除表,但我无法找到如何做到这一点的任何信息。
仅当数据库正在迁移或加载所有条目并删除它们:)
当前回答
结合Dick Lucas所说的,并从其他StackOverFlow帖子中添加一个重置自动增量,我认为这可以工作:
fun clearAndResetAllTables(): Boolean {
val db = db ?: return false
// reset all auto-incrementalValues
val query = SimpleSQLiteQuery("DELETE FROM sqlite_sequence")
db.beginTransaction()
return try {
db.clearAllTables()
db.query(query)
db.setTransactionSuccessful()
true
} catch (e: Exception){
false
} finally {
db.endTransaction()
}
}
其他回答
从1.1.0房间开始,你可以使用clearAllTables():
删除作为entities()注册到此数据库的所有表中的所有行。
当使用RxJava在后台执行这个任务时,我有删除所有方法的问题。这是我最终解决问题的方法:
@Dao
interface UserDao {
@Query("DELETE FROM User")
fun deleteAll()
}
and
fun deleteAllUsers() {
return Maybe.fromAction(userDao::deleteAll)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ({
d("database rows cleared: $it")
}, {
e(it)
}).addTo(compositeDisposable)
}
结合Dick Lucas所说的,并从其他StackOverFlow帖子中添加一个重置自动增量,我认为这可以工作:
fun clearAndResetAllTables(): Boolean {
val db = db ?: return false
// reset all auto-incrementalValues
val query = SimpleSQLiteQuery("DELETE FROM sqlite_sequence")
db.beginTransaction()
return try {
db.clearAllTables()
db.query(query)
db.setTransactionSuccessful()
true
} catch (e: Exception){
false
} finally {
db.endTransaction()
}
}
如果有人在寻找删除所有的表,刷新一切在应用程序没有任何代码遵循 设备文件资源管理器-> data -> data -> com. com。YOUR_APP ->数据库 您可以删除数据库文件夹中的文件
如果想要从Room中的表中删除一个条目,只需调用这个函数,
@Dao
public interface myDao{
@Delete
void delete(MyModel model);
}
更新:如果你想删除完整的表,调用下面的函数,
@Query("DELETE FROM MyModel")
void delete();
注意:这里MyModel是一个表名。