我们可以在android sqlite DB中同时填写getWritableDatabase()和getReadableDatabase()请求

时间:2018-05-01 14:35:11

标签: android sqlite

我试图从两个线程的Android应用程序中请求来自SQLite DB的一些数据。因此可以在android的同一个db实例上同时调用getReadableDatabase()和getWritableDatabase()。

2 个答案:

答案 0 :(得分:0)

是的,这是可能的,但你需要小心,因为如果你调用close来关闭与db的连接,那么如果它正在尝试读/写,则另一个线程将崩溃。

答案 1 :(得分:0)

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

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

按照: -

  在API级别1 SQLiteDatabase中添加

getReadableDatabase

     

getReadableDatabase()

     

创建和/或打开数据库。

     

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

     

如果   问题已解决,以后对 getWritableDatabase() 的调用可能会成功,   在这种情况下,只读数据库对象将被关闭   读/写对象将来会被返回。

getReadableDatabase

因此,如果数据库是可写的,那么肯定是,但如果数据库只是可读的,那么getWritableDatabase可能会失败,因此可能是罕见的情况。 / p>

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