Реагировать на собственный оператор вставки SQLite не работает - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь использовать SQLite с React native, чтобы вставить некоторые значения в таблицу

На моей главной странице я создаю таблицу примерно так ...

db.transaction(tx => {
  tx.executeSql(
    `create table if not exists puzzles (
        id primary key not null, 
        level int not null, 
        image varchar(512) NOT NULL,
        imageSolution varchar(512) NULL,
        puzzleAnswer varchar(16) NULL,
        type varchar(16) NULL,
        availableLetters varchar(16) NULL,
        charactersGiven varchar(4) NULL);`
  );
});

В моемкомпонент страницы, который я пытаюсь вставить, используя следующее:

    db.transaction(tx => {
      for (var puz of puzzlesFiltered) {
        tx.executeSql(
          `insert into
        puzzles (id, image, imageSolution, type, puzzleAnswer, level, charactersGiven, availableLetters)
        VALUES (?,?,?,?,?,?,?,?) WHERE NOT EXISTS(SELECT 1 FROM puzzles WHERE id = ${
          puz.id
        })`,
          [
            puz.id,
            puz.image,
            puz.imageSolution,
            puz.type,
            puz.puzzleAnswer,
            puz.level,
            puz.charactersGiven,
            puz.charactersGiven
          ],
          (tx, results) => {
            console.log("Results", results.rowsAffected);
          },
          (err) => {
            console.error(err);
          }
        );
      }
    });

Я получаю следующее сообщение об ошибке, которое я понятия не имею, что это значит, кто-нибудь может помочь?

Кроме того, есть ли лучший способ вставить массив вместо циклического перебора каждой строки?

[16:07:09] WebSQLTransaction {"_complete": false, "_error ": null," _running ": true," _runningTimeout ": false," _sqlQueue ": Queue {" first ": undefined," last ": undefined," length ": 0,}," _websqlDatabase ": WebSQLDatabase {"_currentTask ": TransactionTask {" errorCallback ": [функция анонимная]," readOnly ": ложь," successCallback ": [функция анонимная]," txnCallback ": [функция анонимная],}," _db ": SQLiteDatabase {" _closed ":false, "_name": "db.db",}, "_running": true, "_txnQueue": Queue {"first": Object {"item": TransactionTask {"errorCallback": [функция анонимная], "readOnly": false, "successCallback": [функция анонимная], "txnCallback": [функция анонимная],},}, "last": Object {"item": TransactionTask {"errorCallback": [функция анонимная], "readOnly":false, "successCallback": [анонимная функция], "txnCallback": [анонимная функция],},}, "length": 1,}, "version": "1.0",},}

1 Ответ

0 голосов
/ 25 ноября 2018

Я не уверен, что ваш запрос поддерживается SQLite.

Вы можете попробовать что-то вроде:

INSERT INTO puzzles
(id, image, imageSolution, type, puzzleAnswer, level, charactersGiven, availableLetters)
SELECT ?,?,?,?,?,?,?,?
WHERE NOT EXISTS(SELECT 1 FROM puzzles WHERE id = ${puz.id})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...