Android中如何为SQLDelight指定自定义数据库目录?
如何修改AndroidSqliteDriver的数据库存储位置
当然可以修改数据库的存储位置。AndroidSqliteDriver提供了支持自定义路径的构造方法,不用局限于默认的应用内部databases目录。
具体做法是直接传入数据库文件的完整绝对路径作为参数,而非仅传入文件名"test.db"。比如要把数据库存到外部存储的自定义目录下,代码可以这么写:
// 定义外部存储的应用专属自定义目录路径 val dbDir = File(context.getExternalFilesDir(null), "custom_db") // 确保目录存在,不存在则创建 if (!dbDir.exists()) { dbDir.mkdirs() } // 拼接数据库文件的完整路径 val dbPath = File(dbDir, "test.db").absolutePath // 使用完整路径初始化AndroidSqliteDriver val driver = AndroidSqliteDriver(OfflinePersonalDataDb.Schema, context, dbPath)
需要注意:
- 若使用外部存储路径,Android 10及以上版本借助Scoped Storage机制,访问应用专属外部目录无需额外申请存储权限;如果是其他外部路径,则需要对应权限
- 必须确保自定义路径的上级目录已存在,否则数据库创建会失败
内容的提问来源于stack exchange,提问作者aismael
相关产品推荐
相关产品推荐

