使用内存中的sqlite android

Gra*_*dpa 18 sqlite android in-memory


我一直在阅读,浏览,搜索很多,我来回交叉堆栈溢出很多次,我设法尽可能地缩小我的问题.

我唯一不明白的是如何充分利用内存中的SQLite数据库.

这是我的情况 - 我有一个加密的SQLite数据库,我在加载我的应用程序时解密(这部分可以肯定).我与数据库交互的类肯定使用普通数据库.因此,为了简化,一切都是完美无缺的,从内部手机内存加载的普通数据库,但我不知道如何或在何处将解密的数据库存储在内存中,因此它将被解释为普通数据库.

我想我应该把null,而不是一个名称的super(context, null, null, 3);,用:memory:的,而不是一个路径SQLiteDatabase.openDatabase(),但我还是不完全了解.它说它找不到android_metadata表,但我确信数据库是应该的.

希望我对此很清楚:)

Die*_*ano 26

如果name是,SQLiteOpenHelper()将创建一个内存数据库null.请注意,它将在您调用时创建getWritableDatabase().

然后你应该插入你的数据.


Dev*_*red 8

您(或框架)创建使用数据库ONE如下:

  • SQLiteDatabase.create()
  • SQLiteDatabase.openDatabase()
  • SQLiteDatabase.openOrCreateDatabase()

第一个选项是创建仅内存数据库的唯一方法,另外两个打开或创建数据库文件.

因此,如果你正在使用SQLiteOpenHelper()并且你传递nameas null,框架调用SQLiteDatabase.create(null),那么你将获得一个只存在于内存中的数据库(它在close()被调用时会死掉).也没有必要再调用其他直接方法之一.而是来电getReadableDatabase()getWritableDatabase()来自你的帮手.