【问题标题】:ionic executeSql doesn't work离子 executeSql 不起作用
【发布时间】:2018-10-07 03:20:53
【问题描述】:

我实际上尝试使用 SQLite 制作移动应用程序。我只是尝试创建两个表:

constructor(private sqlite:SQLite,public modalCtrl: ModalController,public navCtrl: NavController, private navParam: NavParams, private databaseprovider: DatabaseProvider, private employeesProvider: EmployeeProvider) {
    this.createDetabaseFile();
}

private createDetabaseFile() : void {
    this.sqlite.create({
          name: DATABASE_FILE_NAME,
          location: 'default'
    }).then((dbRes: SQLiteObject) => {
        alert("bdd créée");
        this.db = dbRes;
        this.createTables();
    })
}

private createTables() : void {
    this.db.executeSql('CREATE table IF NOT EXISTS  symbole(id INTEGER NOT NULL ,name TEXT)',{})
        .then(() => {
            alert("table symbole created");
            this.db.executeSql('CREATE table IF NOT EXISTS representationPhoto(name VARCHAR(32))',{})
                .then(() => {
                    alert("table representationPhoto created");
                })
            .catch(e => alert("erreur creation table"));
        })
        .catch(e => alert("erreur creation table"));
}

db.executeSql() 似乎不起作用,确实,alert("table symbole created"); 没有出现,但是 alert("bdd créée") 出现了,并且程序没有触发捕获。

你有什么想法吗?

ps:对不起我的英语不好

【问题讨论】:

  • 您可以尝试将 dbRes 作为参数传递给 createTables() 方法并使用它来代替 this.db 吗?

标签: sqlite ionic-framework mobile


【解决方案1】:

请尝试在 createDetabaseFile 函数上方声明 db 变量,这在我看来是个问题,因为您使用的是 this.db 而没有在类范围内声明它。

尝试这样做:

public db: any; // above createDetabaseFile function

【讨论】:

  • 如果他们不声明 db 程序永远不会运行
  • 请尝试将第一个 executeSql 中的名称类型更改为 varchar
【解决方案2】:

在处理 SQLite 之前,您缺少 platform ready 块。试试这个:

import { Platform } from 'ionic-angular';
constructor(private platform: Platform, ...other imports) {
 this.platform.ready().then(() => {
  this.createDetabaseFile();
 })
}

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 2016-02-16
    • 2019-04-11
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多