SQLite更新行

时间:2018-11-09 03:50:34

标签: sql sqlite

我正在使用SQLite数据库在cordova上开发移动应用程序。

应用程序通过JSONP从外部源接收数据,并将数据写入数据库。

我需要使用sql查询来确定表中是否存在具有特定ID的条目,如果存在则重写该行,如果没有则添加一个新条目。

目前,数据写入功能如下:

    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);   
}

1 个答案:

答案 0 :(得分:0)

您可以使用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=?

进一步Read