错误在您的插入语句中:
for(var i=0;i<item.invocationResult.resultSet.length;i++){
WL.Logger.debug(i+")Sto inserendo " + item.invocationResult.resultSet[i].titolo + "," + item.invocationResult.resultSet[i].autore + "," + item.invocationResult.resultSet[i].id_categoria);
tx.executeSql("INSERT INTO canti(titolo,autore,id_categoria,testo) " +
"VALUES('"+item.invocationResult.resultSet[i].titolo+"','" +
+item.invocationResult.resultSet[i].autore+"','" +
+item.invocationResult.resultSet[i].id_categoria+"','" +
+item.invocationResult.resultSet[i].testo+"')");
}
请注意以下几行:
+item.invocationResult.resultSet[i].titolo+"','" +
+item.invocationResult.resultSet[i].autore+"','" +
+item.invocationResult.resultSet[i].id_categoria+"','" +
+item.invocationResult.resultSet[i].testo+
您在每行的开头和上一行的结尾都包含了一个“+”。第一个“+”将用作字符串连接,但第二个“+”将被 javascript 解释为“转换为整数”。
例如,如果您在 javascript 调试器中键入以下内容:
+"54"
结果将是'54',因为这是说“将字符串'54'转换为整数”
但是,如果您键入以下内容:
+"hello"
结果将是 NaN,因为“hello”不能转换为整数。
所以解决方案是改用这个:
for(var i=0;i<item.invocationResult.resultSet.length;i++){
WL.Logger.debug(i+")Sto inserendo " + item.invocationResult.resultSet[i].titolo + "," + item.invocationResult.resultSet[i].autore + "," + item.invocationResult.resultSet[i].id_categoria);
tx.executeSql("INSERT INTO canti(titolo,autore,id_categoria,testo) " +
"VALUES('"item.invocationResult.resultSet[i].titolo+"','" +
item.invocationResult.resultSet[i].autore+"','" +
item.invocationResult.resultSet[i].id_categoria+"','" +
item.invocationResult.resultSet[i].testo+"')");
}
未经测试,但你明白了。
此外,由于您已在此问题上标记了 Worklight,因此我强烈建议您查看JSONStore以满足您的本地存储需求。