嵌套的Sqlite查询无法正常工作

时间:2013-07-31 06:14:20

标签: html5 sqlite jquery-mobile cordova

在此代码中,外部sqlite查询首先完成其工作,然后转到内部sqlite查询  请解释我为什么会这样,并解决我的要求。

/*Outer Sqlite Query*/
 db.transaction(function(transaction){
 transaction.executeSql('SELECT * FROM OuterTable;', [], 
 function(transaction,results){
   if (results != null && results.rows != null) { 
     for (var i = 0; i < results.rows.length; i++) {
      /*My work is going here*/             

       /*Inner Sqlite Query   Inside lor loop*/
       db.transaction(function(transaction){        
   transaction.executeSql('SELECT * FROM MyInnerTable;',[],
   function(transaction, result){
   if (result != null && result.rows != null)  {                                   
         for (var j = 0; j < result.rows.length; j++) {
              /* My Work is Going here */
           }
            }
     },errorHandler);
     } ,errorHandler,nullHandler);
       /*Inner Sqlite End Here*/                 
                        }
                      }
                   },errorHandler);
                  }
                  ,errorHandler,nullHandler);
           /*Outer Sqlite End Here*/  

问题在于这里   第一---&GT;外部Sqlite工作正在执行然后内部Sqlite工作正在执行,但我的Requirment就像  对于外部Sqlite内部Sqlite的每个值都将起作用

例如: -

for(int i=0;i<=10;i++){
     for(int j=0;j<=10;j++){
   // here inner for loop will work for every value of outer for loop

   }
 } 

提前致谢

1 个答案:

答案 0 :(得分:0)

您无法像这样实现对每个外部查询执行内部查询的要求。由于SELECT查询是异步调用。

即使是外部for循环也不会等待您在上一个索引处的查询完成。它将继续执行并同时触发SELECT查询。

但是,要实现这一目标,您可以使用递归。

每个外部循环调用select查询时,成功回调实现内部查询,内部查询的成功回调以所需索引递归调用内部查询所需的次数并发布次数(内部条件循环)它将使用递增的索引调用外部查询实现器。

希望有所帮助。