2016-07-29 77 views
0

我试图查询我的数据库中的数据。但是,当我查询我的数据时,我只能在我的最后一次警报(即alert("Total..."))后获取数据。例如,我运行下面的代码,“result row:”警报仅在最后一次警报出现后才显示。我可以知道为什么吗?选择查询的顺序不正确

function (result) { 

      window.location.href = "#/app/CustHomePage"; 

      var totalBalance = 0; 
      var tableRef = document.getElementById("myList").getElementsByTagName("tbody")[0]; 



      for (var i = 0; i < tableRef.rows.length; i++) { 

       alert(tableRef.rows[i].cells[3].innerHTML.substr(1)); 

       var addBalance = parseInt(tableRef.rows[i].cells[3].innerHTML.substr(1)); 
       totalBalance = totalBalance + addBalance; 
      } 

      alert(totalBalance); 
      var myText = result.text; 
      var myTextTwo = myText.replace(/['"]+/g, ''); 
      alert(myTextTwo); 
      var custBal; 



      var myDB = window.sqlitePlugin.openDatabase({ name: "mySQLite.db", location: 'default' }); 

      alert("Hello"); 

      myDB.transaction(function(transaction) { 
       alert("Hello"); 
       transaction.executeSql("SELECT customerBalance FROM customer where nric = '" + myTextTwo + "'", [], function (tx, results) { 
        var len = results.rows.length; 
        for (var i = 0; i < len; i++) { 
         custBal = results.rows.item(i).customerBalance; 
         alert("result row" + results.rows.item(i).customerBalance); 
         alert("CustomerBal" + custBal); 
        } 
       }, 
       function(tx, error) 
       { 

       } 
        ); 
      }); 



      alert("Total after entitled discount: "); 
      alert("Transaction successful, Next Customer Please"); 

     } 
+0

您需要回拨,即使数据库尚未完成,代码仍会继续执行。你的sqlite pull的代码在哪里,特别是现在alert所创建的那一行。 –

+0

@PatrickMurphy编辑。 – qcc

回答

0

移动你想要的DB交易已恢复或成功或错误处理失败后发生的事情,我刚搬到出来的参数,并给了他们的名字,以跟踪它们。然后将您的评论添加到successCallback处理程序的末尾。任何你想在交易失败后发生的事情都会使用错误回调。

function successCallback(tx, results) { 
var len = results.rows.length; 
for (var i = 0; i < len; i++) { 
    custBal = results.rows.item(i).customerBalance; 
    alert("result row" + results.rows.item(i).customerBalance); 
    alert("CustomerBal" + custBal); 
} 


alert("Total after entitled discount: "); 
alert("Transaction successful, Next Customer Please"); 
} 

function errorCallback(tx, error) { 

} 

myDB.transaction(function (transaction) { 
    alert("Hello"); 
    transaction.executeSql("SELECT customerBalance FROM customer where nric = '" + myTextTwo + "'", [], successCallback, errorCallback); 
}); 
+0

如果我们有多个sql语句呢? – qcc

+0

如果您需要在第一次完成后创建第二个sql事务,请将myDB.transaction(sql select code)函数放入成功回调中,在其中创建另一个回调。直到数据返回才会调用回调 –

+0

你好,这是正确的吗? https://jsfiddle.net/alvinajh/bftkz6g0/ – qcc