首先,我在Android应用程序中创建一个名为“ mydb”的数据库:
DBHelper dbHelper = new DBHelper(context, "mydb", null, 1);//DBHelper is my custom class
Run Code Online (Sandbox Code Playgroud)
并将一些数据写入表中:
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.execSQL("insert into mytable(name, text) values ('allen','hello')");
Run Code Online (Sandbox Code Playgroud)
在这里,一切都很好。但是,然后,我使用软件“ RE Explore”(一定在有根设备上)不通过编程手动删除此数据库。
然后,在我的代码中,我读取了该数据库表。令人惊讶的是,我仍然可以获取存储的数据。
Cursor cursor = db.query("mytable", new String[]{"name","text"}, null, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
为什么?
引用自 Android Developers 参考网站:
一旦打开成功,数据库就被缓存了,所以每次需要写入数据库的时候都可以调用这个方法。(当您不再需要数据库时,请确保调用 close()。)
这是从的描述getWritableDatabase()方法,但是两者getReadableDatabase()并getWritableDatabase()返回基本上相同的对象,用于读取该数据库。
请注意,getWritableDatabase()如果要将您对设备内存中的数据库所做的更改持久化,则应使用该选项。否则,它们将仅在应用程序运行期间有效,并且在应用程序关闭后将被丢弃。如果您希望完全删除数据库,您应该调用 SQLiteDatabase 的close()方法以使缓存无效。
| 归档时间: |
|
| 查看次数: |
6861 次 |
| 最近记录: |