我试图从两个线程的Android应用程序中请求来自SQLite DB的一些数据。因此可以在android的同一个db实例上同时调用getReadableDatabase()和getWritableDatabase()。
答案 0 :(得分:0)
是的,这是可能的,但你需要小心,因为如果你调用close
来关闭与db的连接,那么如果它正在尝试读/写,则另一个线程将崩溃。
答案 1 :(得分:0)
答案是肯定的,但在某些情况下也是否。
基本上getReadableDatabase
将获得"可写" 数据库,除非只能读取数据库。如果数据库不可写,getWritableDatabase
将失败。
按照: -
在API级别1 SQLiteDatabase中添加getReadableDatabase
getReadableDatabase()
创建和/或打开数据库。
这将是 除非出现问题,否则
getWritableDatabase()
返回相同的对象, 例如一个完整的磁盘,要求数据库以只读方式打开。在 在这种情况下,将返回只读数据库对象。如果 问题已解决,以后对
getWritableDatabase()
的调用可能会成功, 在这种情况下,只读数据库对象将被关闭 读/写对象将来会被返回。
因此,如果数据库是可写的,那么肯定是是,但如果数据库只是可读的,那么getWritableDatabase
可能会失败,因此可能是罕见的情况。 / p>
通常情况下,除非特别想要处理无法打开数据库进行写入的情况,否则使用getWritableDatabase
可能真的是需要的。即,如果数据库不可写但可以读取,则真正getReadableDatabase
允许您进行访问。它通常不会防止编写/更新数据库。