我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?
Posted
技术标签:
【中文标题】我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?【英文标题】:Can I create an in-memory database with SqlDelight for running in Android? 【发布时间】:2021-08-15 11:54:48 【问题描述】:我有一个运行良好的 SqlDelight 数据库。我是这样创建的:
Database(androidSqliteDriver(Database.Schema, context, DatabaseName)
对于单元测试,我创建了一个这样的内存数据库:
Database(JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply
Database.Schema.create(this)
)
我想对在模拟器或物理设备上运行的 androidTests 做同样的事情,但是 JdbcSqliteDriver 在 Android 中不起作用,大概是因为 Android 没有默认安装该软件包。
如何在 AndroidTest(或生产环境)中运行内存数据库?
【问题讨论】:
【参考方案1】:事实证明,如果您不命名数据库,它会创建一个内存版本:
Database(AndroidSqliteDriver(Database.Schema, context, null)
因为AndroidSqliteDriver
使用SupportSQLiteOpenHelper.Builder
,在文档中有这个:
/**
* @param name Name of the database file, or null for an in-memory database.
* @return This
*/
@NonNull
public Builder name(@Nullable String name)
mName = name;
return this;
【讨论】:
以上是关于我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在同一个项目中将 sqldelight 与不同的数据库一起使用吗?
如何使用 sqldelight 读取位于资产中的 db 文件 - Android