离子executeSql不起作用

时间:2018-04-26 12:15:17

标签: sqlite ionic-framework mobile

我实际上尝试使用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:抱歉我的英文不好

2 个答案:

答案 0 :(得分:0)

请尝试在createDetabaseFile函数上方声明db变量,这对我来说似乎是问题所在,因为您正在使用this.db而不在类范围内声明它。

尝试这样做:

public db: any; // above createDetabaseFile function

答案 1 :(得分:0)

在处理platform ready之前,您缺少SQLite块。请尝试以下操作:

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