当我尝试在phonegap中插入数据sql时
var var1="a,b,c,d";
var varsplit=var1.split();
/*open for*/
db.transaction(
function(tx,varsplit[i]) {
tx.executeSql('INSERT INTO msj (text) VALUES ("' + varsplit[i]+ '")');
}, errorCB);
/*close for*/结果是:
id msj
///////
1 - a
2 - d
3 - d
4 - d我怎么才能修复它?
发布于 2013-02-06 23:13:45
tx.executeSql是一个非阻塞函数调用。一旦调用了executeSql语句,for循环就不会等待控件返回。因此,它会递增循环指针的值,因为在最后3次插入中会得到'd‘。当第二次执行executeSql语句时,循环已经结束,i的值被设置为最后一个元素。
您需要在executeSql的回调函数中执行下一次插入。一种可能的技术是使用递归。
发布于 2013-02-07 01:48:16
谢谢SHANK!!
已解决
var var1="a,b,c,d";
var vars=var1.split();
/*open for*/
insert(vars[i]);
/*close for*/
function insert(vars){
//openconection
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(
function(tx) {
tx.executeSql('INSERT INTO MENSAJE ( msj) VALUES ("' + vars+ '"');
}, errorCB);
}https://stackoverflow.com/questions/14730761
复制相似问题