Разрабатываю мобильное приложение на кордове с базой данных SQLite.

Приложение получает данные из внешнего источника через JSONP и записывает данные в базу данных.

Мне нужно использовать sql-запрос, чтобы определить, есть ли в таблице запись с определенным идентификатором, переписав строку, если она есть, и добавив новую, если ее нет.

На данный момент функция записи данных выглядит так:

    addNews: function (id, title, date, content) {
    databaseHandler.db.transaction(
        function (tx) {
            tx.executeSql(
                "insert into news(id, title, date, content) values(?, ?, ?, ?)",
                [id, title, date, content],
                function (tx, results) { },
                function (tx, error) {
                    console.log("add news error: " + error.message);
                }
            );
        },
        function (error) {
        },
        function () {
        }
    );
}

var url = "http://cp35240-wordpress.tw1.ru/wp-content/plugins/plugin/news.js";
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);

function news(data) {
    var id = data.id;
    var title = data.title;
    var date = data.date;
    var content = data.content;  
    newsHandler.addNews(id, title, date, content);   
}
0
JS588787 9 Ноя 2018 в 06:50

1 ответ

Лучший ответ

Вы можете использовать INSERT OR REPLACE

Синтаксис

INSERT OR REPLACE INTO TABLE (column_list) 
VALUES (value_list);

Итак, здесь вы можете использовать

INSERT OR REPLACE INTO news(id, title, date, content) values(?, ?, ?, ?)

Или вы можете использовать UPSERT

INSERT INTO news(id, title, date, content) 
values(?, ?, ?, ?)
ON CONFLICT(Id) DO UPDATE 
    SET tile=?

Подробнее Прочтите

0
Sanal Sunny 9 Ноя 2018 в 04:33