我们可以在 android sqlite DB 中同时完全填充 getWritableDatabase() 和 getR



我正在尝试从两个线程从Android应用程序中的SQLite DB请求一些数据。那么是否可以在Android中的同一数据库实例上同时调用getReadableDatabase((和getWritableDatabase((。

是的,这是可能的,但你需要小心,因为如果你调用close来关闭与数据库的连接,另一个线程在尝试读/写时会崩溃。

答案是肯定的,但在某些情况下也是否定的。

基本上getReadableDatabase将得到一个"可写">数据库,除非数据库只能被读取。如果数据库不可写,getWritableDatabase将失败。

根据 :-

getReadableDatabase 在 API Level 1 SQLiteDatabase 中添加

getReadableDatabase((

创建和/或打开数据库。

这将是getWritableDatabase()返回的相同对象,除非出现问题, 如磁盘已满,则要求数据库以只读方式打开。在 在这种情况下,将返回只读数据库对象。

如果 问题已修复,将来调用getWritableDatabase()可能会成功, 在这种情况下,将关闭只读数据库对象,并且 读/写对象将在将来返回。

获取可读数据库

因此,如果数据库是可写的,那么肯定是的,但如果数据库只是可读,那么getWritableDatabase可能会失败,因此对于这种罕见的情况是否。

通常,除非特别想要处理无法打开数据库进行写入的情况,否则使用getWritableDatabase可能是真正需要的,即 RealgetReadableDatabase允许您在数据库不可写但可以读取时进行一些访问。它通常不会防止写入/更新数据库。

最新更新