【问题标题】:Can I create an in-memory database with SqlDelight for running in Android?我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?
【发布时间】:2023-04-11 12:22:02
【问题描述】:

我有一个运行良好的 SqlDelight 数据库。我是这样创建的:

Database(AndroidSqliteDriver(Database.Schema, context, DatabaseName)

对于单元测试,我创建了一个这样的内存数据库:

Database(JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply { 
        Database.Schema.create(this) 
})

我想对在模拟器或物理设备上运行的 androidTests 做同样的事情,但是 JdbcSqliteDriver 在 Android 中不起作用,大概是因为 Android 没有默认安装该软件包。

如何在 AndroidTest(或生产环境)中运行内存数据库?

【问题讨论】:

    标签: android kotlin sqldelight


    【解决方案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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 2020-02-01
      • 2015-09-11
      • 2011-02-04
      • 2011-07-10
      • 2014-07-01
      • 1970-01-01
      • 2020-04-20
      相关资源
      最近更新 更多