Дублирующиеся значения в строках SQL lite (Ionic 2) - PullRequest
0 голосов
/ 13 июня 2018

код для создания таблицы

  if (!this.isOpen) {
              this.storage = new SQLite();
              this.storage.create({ name: "form.db", location: "default" }).then((db: SQLiteObject) => {
                this.db = db;
                db.executeSql("CREATE TABLE IF NOT EXISTS formstable (formId VARCHAR  PRIMARY KEY, clientId VARCHAR, formsdata VARCHAR)", []);
                console.log("table created successfully");
                this.isOpen = true;
              }).catch((error) => {
                console.log(error);
              })
            }

Это функция, которую я использовал для вставки данных в sql lite

 Savedata(formId:string, clientId:string,formsdata:string){
    return new Promise ((resolve, reject) => {
      let sql = "INSERT OR REPLACE INTO formstable (formId, clientId,formsdata) VALUES (?,?,?)";
      this.db.executeSql(sql, [formId, clientId,formsdata]).then((data) =>{
        resolve(data);
        console.log(data);
        console.log("data inserted successfully")
      }, (error) => {
        reject(error);
      });
    });
  }

Функция для получения значений из sql lite

 GetAlldata(){
    return new Promise ((resolve, reject) => {
      this.db.executeSql("SELECT * FROM formstable", []).then((data) => {
        let arrayUsers = [];
        if (data.rows.length > 0){
          for (var i = 0; i < data.rows.length; i++) {
              arrayUsers.push({
                formId: data.rows.item(i).formId,
                clientId: data.rows.item(i).clientId,
                formsdata: JSON.parse(data.rows.item(i).formsdata)
              });                         
          }                     
        }
        resolve(arrayUsers);
      }, (error) => {
        reject(error);
      })
    })
  }

Мое значение "formsdata" в таблице - это JSON, который преобразуется в строку и сохраняется в базу данных и разбирается в json при получении. При каждом вызове функции "savadata ()"три значения (formid, clientid, formsdata) вставляются снова и снова. Чтобы избежать этого дублирования значений, я попытался « Заменить »ключевое слово , но не сработало

1 Ответ

0 голосов
/ 13 июня 2018

Вы должны сделать 'formId' первичным ключом .В вашей табличной схеме измените необходимое поле на первичный ключ , чтобы замена работала.

...