android - 如果写入后不久断电,数据不会写入 sqlite 数据库

标签 android sqlite

我的应用程序将一些数据插入到它的 SQLite 数据库中,并且应用程序确认插入成功。 但是,如果不久之后断电,则在移动设备完全重启后数据将不可见。

似乎正在进行一些缓存 - 我如何“刷新”缓冲区/缓存?

注意:sqlite 数据库位于主闪存上,而不是在 sdcard 上。

最佳答案

你好某人,

如果你想保证发生数据库写入,你应该使用事务。

即:这是一个您可以构建的简单示例。

DatabaseHelper readDB = new DatabaseHelper(Context);
SQLiteDatabase db = readDB.getWritableDatabase();

String lastConnID = "1";
String DATABASE_TABLE = "TestDB";
String KEY_ROWID = "pkey";

db.beginTransaction();
db.update(DATABASE_TABLE, values, KEY_ROWID + "="
                    + "'" + lastConnID + "'", null);
db.setTransactionSuccessful();
db.endTransaction();

可以找到示例 DatabaseHelperClass here .

当您调用 setTransactionSuccessful 时,行为就完成了,项目应该提交给数据库。您应该在调用后立即结束事务,因为即使在设置事务成功和结束事务之间发生错误,它仍将提交给数据库。

希望对您有所帮助! 干杯。

关于android - 如果写入后不久断电,数据不会写入 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737641/

相关文章:

android - 在 ListView 中使用 TextureView 时视频显示顺序错误

android - Travis CI 构建不适用于 Android 约束布局

android - 视频不会在 VideoView 中恢复

Android 参数化 sql 查询不起作用

python - 在带有 sqlite 的 Python 中是否有必要关闭游标?

javascript - 通过 Javascript 调用 SQLite 时 Firefox 出错

android - 我应该为哪些 Android 设备架构构建应用程序?

java - 安装 Android SDK 时出现问题

iphone - 在 iphone 中如何获取 Sqlite 最后插入的行 ID?

android - 按多列请求分组,结果在一行上 - Android SQLite