【问题标题】:How to insert in WebSQL / Phonegap SQLite with auto increment?如何使用自动增量插入 WebSQL / Phonegap SQLite?
【发布时间】:2015-03-02 06:30:25
【问题描述】:

我正在处理一个小型 Phonegap 项目,但在寻找插入 WebSQL 数据库的正确语法时遇到了问题。我正在从 API 读取 jSON 响应并尝试将其缓存到 WebSQL / SQLite 数据库,但总是收到错误消息。数据库已创建,表也...问题是插入。 为了将不同的行插入到数据库中,我遍历了我的 JSON。当我用 console.log 显示它们时,所有变量都被设置和显示。我做错了什么?

songdata = JSON.parse(songdata); // JSON Gespielte Songs für ALLE Clubs abfragen, in SQLite speichern, und bei "success" weiter an den clubboxstyler weiterleiten

        db = window.openDatabase("database.db", "1.0", "Demo", -1);
        db.transaction(function(tx){
             tx.executeSql('CREATE TABLE IF NOT EXISTS activity_stream (id integer primary key autoincrement, band text, clubID integer, time text, title text)');
             for (var kay in songdata) 
                {
                var Xband = songdata[kay].band;
                var XclubID = songdata[kay].clubID;
                var Xtime = songdata[kay].time;
                var Xtitle = songdata[kay].title;
                console.log(Xtitle);
                tx.executeSql('INSERT INTO activity_stream (id, band, clubID, time, title) VALUES (1, ?, ?, ?, ?), [1, Xband, XclubID, Xtime, Xtitle]');
                }

        }, function(e) {
            console.log("ERROR: " + e.message);
        });

感谢您的帮助!非常感谢。

【问题讨论】:

    标签: javascript sqlite web-sql


    【解决方案1】:

    好吧,在您的代码 sn-p 中,您为插入的每一行明确设置了相同的 id(等于“1”)。那行不通,因为主键需要不同,对吗? :)

    自动递增列的问题是您不为它们提供价值,它们是自动为您设置的。所以插入时只需省略'id'列,如下所示:

    tx.executeSql('INSERT INTO activity_stream (band, clubID, time, title) VALUES (?, ?, ?, ?), [Xband, XclubID, Xtime, Xtitle]');
    

    【讨论】:

    • 非常感谢 Molderek - 另外我有一个愚蠢的语法错误。 tx.executeSql('INSERT INTO activity_stream (band, clubID, time, title) VALUES (?, ?, ?, ?)', [Xband, XclubID, Xtime, Xtitle]);
    猜你喜欢
    • 2012-01-05
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2011-07-15
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多