代码之家  ›  专栏  ›  技术社区  ›  oneManArmin

Ionic:SQL Lite Insert Into语句不起作用

  •  0
  • oneManArmin  · 技术社区  · 6 年前

    我正在尝试创建一个简单的Android应用程序 Ionic SQL Lite and Ionic Ionic and Cordova from browser . 我设法用下面的代码来设置我的数据库(至少我的应用程序似乎在运行) 之后 this.initializeApp() :

    init_db(){
    var config = this.sqlite.create({
      name: 'data.db',
      location: 'default'
    })
    .then((db: SQLiteObject) =>{
      this.db = db;
      db.executeSql('CREATE TABLE "ExpenseModel" ( `EXPENSE_LIMIT` INTEGER NOT NULL, `ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `MODEL_NAME` TEXT NOT NULL UNIQUE, `PINNED` INTEGER )');
      // .then(() => console.log('Executed'))
      // .catch(e=> console.log(e));
    
    });
    // .catch(e => console.log(e));
    

    (注释掉异常处理只是为了查看是否抛出了异常)

    但是,执行简单SQL Lite插入的以下代码不起作用:

    this.db.executeSql('INSERT INTO "ExpenseModel" (EXPENSE_LIMIT, ID, MODEL_NAME, PINNED) VALUES ( 5,1, \'asd\', 1)');
    

    当我用 ionic cordova run browser ,我得到一个白色屏幕。当我和你一起跑的时候 ionic serve 无法读取未定义的属性“executeSql”

    in an online editor ,所以我不认为是SQL。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Tej Patel    6 年前

    1->安装Cordova和Ionic本机插件:

    npm安装--保存@ionic native/sqlite

    2->将此插件添加到应用程序的模块
    从“@ionic native/SQLite”导入{SQLite};
    供应商:[ SQLite公司, ]


    从'@ionic native/SQLite'导入{SQLite,SQLiteObject};
    建造师( 私有sqlite:sqlite, );

    addItem() {
        this.sqlite.create({
            name: 'ionicdb.db',
            location: 'default'
        }).then((db: SQLiteObject) => {
            db.executeSql('INSERT INTO bikes VALUES(NULL,?,?,?,?,?)', [this.date, this.item.modal, this.item.company, this.item.color, this.imageString])
                .then((res) => {
                    this.presentToast("Data Saved Successfully");
                })
                .catch((err) => {
                    console.log('Error in SaveData------');
                    console.log(JSON.stringify(err));
                    this.presentToast("Error in SaveData");
                });
        }).catch((e) => {
            console.log("ERROR in SaveData:------");
            console.log(JSON.stringify(e));
            this.presentToast("ERROR in SaveData");
        });
        this.navCtrl.push(HomePage);
    }
    


    SQlite需要实际设备才能正确执行。。

    希望这个能帮你。。。:)

        2
  •  1
  •   Everton Costa    6 年前

    你需要在一个真实的设备上运行你的应用程序来让SQlite资源工作,或者使用IndexedDB模式让它在浏览器上工作。 但是有一些技巧可以让SQlite在浏览器上运行,比如“ Mocking SQLite native plugin ". 其他人喜欢 Ionic Native SQLite Storage — Browser Ionic 3, Angular 4 and SQLite CRUD ".