如何使用自动增量插入 WebSQL / Phonegap SQLite?
How to insert in WebSQL / Phonegap SQLite with auto increment?
我正在做一个小型的 Phonegap 项目,但在寻找插入 WebSQL 数据库的正确语法时遇到了问题。我正在读取来自 API 的 jSON 响应,并尝试将其缓存到 WebSQL / SQLite 数据库,但总是收到错误消息。数据库已创建,table 也...问题是插入。
为了将不同的行插入数据库,我遍历了 JSON。当我用 console.log 显示它们时,所有变量都被设置和显示。我做错了什么?
歌曲数据=JSON.parse(歌曲数据);
// 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);
});
感谢您的帮助!非常感谢。
好吧,在您的代码片段中,您明确地为要插入的每一行设置了相同的 ID(等于“1”)。那行不通,因为主键需要不同,对吧? :)
自动递增列的问题是您不为它们提供值,它们是自动为您设置的。所以在插入的时候省略掉'id'这一列就好了,像这样:
tx.executeSql('INSERT INTO activity_stream (band, clubID, time, title) VALUES (?, ?, ?, ?), [Xband, XclubID, Xtime, Xtitle]');
我正在做一个小型的 Phonegap 项目,但在寻找插入 WebSQL 数据库的正确语法时遇到了问题。我正在读取来自 API 的 jSON 响应,并尝试将其缓存到 WebSQL / SQLite 数据库,但总是收到错误消息。数据库已创建,table 也...问题是插入。 为了将不同的行插入数据库,我遍历了 JSON。当我用 console.log 显示它们时,所有变量都被设置和显示。我做错了什么?
歌曲数据=JSON.parse(歌曲数据); // 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);
});
感谢您的帮助!非常感谢。
好吧,在您的代码片段中,您明确地为要插入的每一行设置了相同的 ID(等于“1”)。那行不通,因为主键需要不同,对吧? :)
自动递增列的问题是您不为它们提供值,它们是自动为您设置的。所以在插入的时候省略掉'id'这一列就好了,像这样:
tx.executeSql('INSERT INTO activity_stream (band, clubID, time, title) VALUES (?, ?, ?, ?), [Xband, XclubID, Xtime, Xtitle]');