我使用读写数据库没有任何问题.但我无法找出差异.我在互联网上搜索但不太清楚.有人能告诉我区别吗?在哪种情况下我应该使用getWritableDatabase()或getReadableDatabase()?
Mar*_*ark 21
在正常情况下,getReadableDatabase()将返回由返回的相同可写数据库getWritableDatabase().
但是,如果无法返回可写数据库,getWritableDatabase()则会失败,而getReadableDatabase()将尝试返回READ_ONLY数据库.
检查参考
自:API级别1
创建和/或打开数据库.这将是getWritableDatabase()返回的同一对象,除非某些问题(例如完整磁盘)要求以只读方式打开数据库.在这种情况下,将返回只读数据库对象.如果问题是固定的,以getWritableDatabase未来()调用可能会成功,在这种情况下,只读数据库对象将被关闭和读/写对象将在未来返回.
与getWritableDatabase()一样,此方法可能需要很长时间才能返回,因此您不应从应用程序主线程(包括ContentProvider.onCreate())调用它.返回
a database object valid until getWritableDatabase() or close() is called.
Run Code Online (Sandbox Code Playgroud)
如果无法打开数据库,则抛出SQLiteException
自:API级别1
创建和/或打开将用于读写的数据库.第一次调用它时,将打开数据库并调用onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int)和/或onOpen(SQLiteDatabase).
成功打开后,数据库将被缓存,因此您可以在每次需要写入数据库时调用此方法.(确保在不再需要数据库时调用close().)错误权限或完整磁盘等错误可能导致此方法失败,但如果问题得到解决,将来的尝试可能会成功.
数据库升级可能需要很长时间,您不应该从应用程序主线程调用此方法,包括从ContentProvider.onCreate().返回
a read/write database object valid until close() is called
Run Code Online (Sandbox Code Playgroud)
如果无法打开数据库进行写入,则抛出SQLiteException