Ionic 如何在SQLITE中创建离子角的多个表

e4eetjau  于 2022-12-20  发布在  Ionic
关注(0)|答案(1)|浏览(140)

我目前正尝试在我的ionic项目中使用SQLITE创建多个表,但是这种格式似乎不起作用;有没有人知道如何在一个ionic项目中用SQLITE创建多个表?非常感谢

databaseConn() {
        this.platform.ready().then(() => {
          this.sqlite.create({
              name: this.db_name,
              location: 'default'
            }).then((sqLite: SQLiteObject) => {
              this.dbInstance = sqLite;
              sqLite.executeSql(`
                  CREATE TABLE IF NOT EXISTS ${this.db_table} (
                   product_id INTEGER PRIMARY KEY,  
                  product_name varchar(255),
                  product_price varchar(255)
                  )`, []) 
                .then((res) => {
                  // alert(JSON.stringify(res));
                })
                .catch((error) => alert(JSON.stringify(error)));
            })
            .catch((error) => alert(JSON.stringify(error)));
        });   

        this.platform.ready().then(() => {
          this.sqlite.create({
              name: this.db_name,
              location: 'default'
            }).then((sqLite: SQLiteObject) => {
              this.dbInstance = sqLite;
                  sqLite.executeSql(`
                   CREATE TABLE IF NOT EXISTS ${this.db_table2} (
                  customer_id INTEGER PRIMARY KEY,  
                  customer_name varchar(255)
              
                )`, [])   
                .then((res) => {
                  // alert(JSON.stringify(res));
                })
                .catch((error) => alert(JSON.stringify(error)));
            })
            .catch((error) => alert(JSON.stringify(error)));
        });   
    }
8ehkhllq

8ehkhllq1#

这个.platform.ready钩子在你的设备准备好后只会触发一次。

ready()=〉承诺

当平台就绪并且可以调用本机功能时返回承诺。如果应用程序从Web浏览器中运行,则承诺将在DOM就绪时解析。如果应用程序从应用程序引擎(如Cordova)运行,则承诺将在Cordova触发deviceready事件时解析。解析的值为readySource,它说明所使用的平台。
例如,当Cordova就绪时,解析的就绪源是cordova。默认就绪源值将是dom。如果根据应用运行的平台运行不同的逻辑,readySource很有用。例如,只有Capacitor和Cordova可以执行状态栏插件,因此Web不应运行状态栏插件逻辑。
deviceready事件在Cordova完全加载后触发。一旦事件触发,您可以安全地调用Cordova API。应用程序通常在HTML文档的DOM加载后使用document.addEventListener附加事件侦听器。

databaseConn() {
    this.platform.ready().then(() => {
        this.sqlite.create({
            name: this.db_name,
            location: 'default'
        }).then((sqLite: SQLiteObject) => {
            this.dbInstance = sqLite;
            this.createTable(
                `CREATE TABLE IF NOT EXISTS ${this.db_table} (
                   product_id INTEGER PRIMARY KEY,  
                  product_name varchar(255),
                  product_price varchar(255)
                )`
            );

            this.createTable(
                `CREATE TABLE IF NOT EXISTS ${this.db_table2} (
                  customer_id INTEGER PRIMARY KEY,  
                  customer_name varchar(255)
                )`
            );
        })
            .catch((error) => alert(JSON.stringify(error)));
    });
}

createTable(tableStr: string): void {
    this.dbInstance.executeSql(`${tableStr}`, []).then((res) => {
        console.log('table was created')
    })
    .catch(e => {
        alert("error " + JSON.stringify(e))
    })
}

相关问题