我正在开发一个小型的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);
});
谢谢你的帮助!非常感谢。
答案 0 :(得分:1)
好吧,在你的代码片段中,你明确地为你要插入的每一行设置相同的id(等于'1')。这不起作用,因为主键需要不同,对吧? :)
自动增量列的内容是您没有为它们提供价值,它们会自动为您设置。所以在插入时只需省略'id'列,如下所示:
tx.executeSql('INSERT INTO activity_stream (band, clubID, time, title) VALUES (?, ?, ?, ?), [Xband, XclubID, Xtime, Xtitle]');