是否有东西插入到SQLite中作为MySQL中重复键的插入?
在PhoneGap中,我在'ON DUPLICATE'上收到SQL语法错误。我不希望在插入之前查找每个项目。
我的代码:
$.each(jsondata, function(i, item) {
tx.executeSql('INSERT INTO Pricelist2 (id, name,desc,make,price) '+
'VALUES ('+jsondata[i].id+', '+
'"'+data[i].name+'", '+
'"'+jsondata[i].description+'", '+
'"'+jsondata[i].make+'", '+
'"'+jsondata[i].price+'")'+
' ON DUPLICATE KEY UPDATE '+
'desc=\''+jsondata[i].description+'\','+
'price=\''+jsondata[i].price+'\';');
});
答案 0 :(得分:3)
您只能使用syntax that is actually supported by SQLite。
对于这个特殊问题,INSERT OR REPLACE
很可能是你想要的:
tx.executeSql('INSERT OR REPLACE INTO Pricelist2(id,name,desc,make,price)'+
'VALUES (?,?,?,?,?)',
[jsondata[i].id,
data[i].name,
jsondata[i].description,
jsondata[i].make,
jsondata[i].price]);
(如果记录已存在,name
和make
也将被替换。)