2014-10-09 4 views
0

아래 코드는 Result Set이고 코드 내의 어느 곳에서나 사용하고 싶습니다. 마지막 줄 또한 '0'을 인쇄하지만 그 값에 Result Set의 행 수가 포함되기를 원합니다.
어떻게해야합니까? 나는 당신의 for 루프 믿고콜백을 사용하여 JavaScript의 웹 -SQL 데이터베이스에서 결과 집합을 반환합니다.

var querySql = function(sql, callback) { 
    var tab = []; 
    db.transaction(function(tx) {  
     tx.executeSql(sql,[],function(tx, results){   
      for(i = 0; i < results.rows.length; i++){ 
       tab.push(results.rows);      
      } 
     callback(tab);  
     }); 
    }); 
} 

var queryLength = 0; 
querySql('SELECT * FROM contacts', function(result) { 
    console.log("RESULTS: " + result.length); 
    queryLength = result.length; 
    console.log("QUERY_LENGTH: " + queryLength); 

    for(var i = 0; i < result.length; i++){ 
     alert("ITEMS: " + result[i].item(i)['firstname']); 
    } 
}); 

console.log("QUERY_LENGTH_1: " + queryLength); 

답변

0

은 그렇게처럼 item() 방법 항목에 액세스해야합니다

tx.executeSql(sql,[],function(tx, results){   
    for(i = 0; i < results.rows.length; i++){ 
     tab.push(results.rows.item(i)); // <-------- 
    } 
    callback(tab);  
}); 

기록과 함께 tab을 채우는 것을.

또한, 콘솔 문은 querySql 폐쇄 내에서 할 필요가 : 트랜잭션이 다음 이벤트 루프에서 실행되기 전에

querySql('SELECT * FROM contacts', function(result) { 
    //... 
    console.log("QUERY_LENGTH_1: " + queryLength); 
}); 

이 그렇지 않으면, 첫번째 을 평가됩니다.

+0

예, 외부 콘솔 진술이 먼저 평가되지만 어쨌든 그 값을 외부에서 사용하기를 원합니다. – vidulaJ