如何在自动增量的WebSQL / Phonegap SQLite中插入?

时间:2015-03-02 06:30:26

标签: javascript sqlite web-sql

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

songdata = JSON.parse(songdata); // JSON Gespielte Songs for 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);
        });

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

1 个答案:

答案 0 :(得分:1)

好吧,在你的代码片段中,你明确地为你要插入的每一行设置相同的id(等于'1')。这不起作用,因为主键需要不同,对吧? :)

自动增量列的内容是您没有为它们提供价值,它们会自动为您设置。所以在插入时只需省略'id'列,如下所示:

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