Ionic - 在 android 的不同目录中创建 SQLite 数据库

Posted

技术标签:

【中文标题】Ionic - 在 android 的不同目录中创建 SQLite 数据库【英文标题】:Ionic - Create SQLite database in different directory in android 【发布时间】:2018-12-24 17:29:23 【问题描述】:

我坚持在与默认目录不同的目录中创建 SQLite 数据库。为了描述我的问题,我正在使用:

cordova-sqlite-storage sqlite 插件和 cordova-file-plugin 用于文件管理。

如果有帮助,我正在使用 Ionic3 和 Angular5。

我的代码如下所示:

import  File  from '@ionic-native/file';
import  SQLite, SQLiteObject  from '@ionic-native/sqlite';

constructor(private sqlite: SQLite, private file: File)



createDB()
    this.sqlite.create(
      name: "maindata.db",
      location: this.file.externalDataDirectory //<---what do I put here?
    ).then((sqliteObj: SQLiteObject) => 
       //success
    , error => 
       console.log(error);
       //error
    );

上面的代码输出:

错误:无法确定有效的 ios 数据库位置 在 newSQLError 处调用 openDatabase

这是我不明白的,我没有添加ios平台,我正在为android平台使用和构建它。为什么它说这不是有效的 iOS 数据库位置。 SQLiteDatabaseConfig 的其他参数有:location、iosDatabaseLocation、createFromLocation 和 key。

我尝试过的其他东西:

this.file.applicationDirectory
this.file.externalApplicationDirectory
"/sdcard/"
"/sdcard"

它们都不起作用,只有“默认”起作用。如何在默认以外的自定义目录中创建我的 sqlite db 文件?

【问题讨论】:

嗨!我遇到了和你一样的问题,我想知道你是否最终找到了解决方案。 【参考方案1】:

如果是 ios,则没有外部目录。但是你试图访问外部目录。所以它给出了错误。 您必须将数据存储到数据目录或文档目录中。

使用this.file.documentsDirectory 而不是this.file.externalDataDirectory,否则您必须使用条件。

if(platform(ios))
  this.file.documentsDirectory
else if(platform(android))`enter code here`
  this.file.externalDataDirectory
 

【讨论】:

以上是关于Ionic - 在 android 的不同目录中创建 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

ios ui 与 android 和浏览器 ionic 不同

从 Android 意图打开 Ionic (Capacitor) 应用程序中的特定页面

Ionic 2 Native Audio Android上没有声音

vs2015 ionic cordova ios模拟器中没有图标

Gradle,Gradle 包装器在 Android Studio 中的不同实例 by ionic cordova

IONIC 字体大小在不同设备中看起来不同