Android SQLite Phone Gap db事务在插入时未保存某些记录

Android SQLite Phone Gap db事务在插入时未保存某些记录,android,ios,sqlite,cordova,Android,Ios,Sqlite,Cordova,我得到json格式的学生列表数据。我通过循环接收的数据在sqlite phonegap中插入查询。但是insert语句与某些记录不相同。我觉得是因为交易没有完成 有人能解释一下我在这个问题上做错了什么吗 感谢您的帮助。使用以下代码插入: dbShell.transaction(function(tx) { for (var i=0; i< data.length; i++ ){ var sql ="Insert into students(st

我得到json格式的学生列表数据。我通过循环接收的数据在sqlite phonegap中插入查询。但是insert语句与某些记录不相同。我觉得是因为交易没有完成

有人能解释一下我在这个问题上做错了什么吗


感谢您的帮助。

使用以下代码插入:

    dbShell.transaction(function(tx) {
       for (var i=0; i< data.length; i++ ){
            var sql ="Insert into students(studentid,name) SELECT '"+ data.studentid +"', '"+ data.name +"' WHERE NOT EXISTS(SELECT * FROM students WHERE studentid ='" + data.studentid +"')";
                            tx.executeSql(sql, [], nullHandler,dbErrorHandler);
            }
    });

您需要添加successHandler和errorHandler,我找到了答案。问题在于我收到的json数据。其中一个名字中只有一句话。这导致查询失败。

将nullhandler替换为SuceeSHandler会有什么区别?我不想在执行insert时执行任何操作,只想执行下一条insert语句。如果要在插入查询后执行某些操作,则需要successHandler。如果不使用successhandler,您将无法知道查询执行何时成功完成。my nullhandler是成功处理程序,它只是命名伙伴。我发现了问题。并且已经回答了这个问题。若你们已经使用了绑定参数,你们可能并没有遇到单引号的问题。
dbShell.transaction(function(tx) {
   for (var i=0; i< data.length; i++ ){
        var sql ="Insert into students(studentid,name) values(?,?)";
        tx.executeSql(sql, [data[i].studentid, data[i].name], successHandler,errorHandler);
   }
});