2016-07-29 8 views
0

私のデータベースにデータを照会しようとしました。しかし、データを照会すると、最後のアラートの後にデータを取得することができました。これはalert("Total...")です。たとえば、次のコードを実行します。「結果行:」のアラートは、最後のアラートが表示された後にのみ表示されます。理由を知ることができますか?選択クエリのシーケンスが正しくない

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プルのコードはどこにありますか、特に結果が警告される行があります。 –

+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

最初のトランザクションが完了した後に2番目のsqlトランザクションを作成する必要がある場合は、myDB.transaction(sql select code)関数を成功コールバック内に置き、そこで別のコールバックを作成します。データが返されるまでコールバックは呼び出されません –

+0

こんにちは、これは正しいですか? https://jsfiddle.net/alvinajh/bftkz6g0/ – qcc

関連する問題