0

当我尝试在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

我该如何解决?

4

2 回答 2

1

tx.executeSql 是一个非阻塞函数调用。一旦调用了 executeSql 语句,for 循环就不会等待控件返回。因此,它会增加循环指针的值,因为您在最后 3 次插入中会得到 'd'。当第二次执行executeSql 语句时,循环已经完成并且i 的值设置为最后一个元素。

您需要在 executeSql 的回调函数中执行下一次插入。一种可能的技术是使用递归。

于 2013-02-06T15:13:45.207 回答
0

谢谢小腿!!

解决了

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);

}
于 2013-02-06T17:48:16.447 回答