2013-07-22 2 views
1

Phonegap의 데이터베이스를보다 쉽게 ​​사용할 수있는 객체를 작성했습니다. SELECT 문의 부분은 다음과 같습니다.Phonegap에서 작동하도록 SQLite SELECT 문을 가져올 수 없습니다.

/******************** 
* Database SELECT: * 
********************/ 
global.select = function(query) 
{ 
    var resultSet = null; 

    db.transaction(function(tx){ // Do SQL stuff here: 
     tx.executeSql(query, [], function(tx, results){ // Success: 
      // When results are there: 
      if(results != null) 
      { 
       // return them for using them: 
       resultSet = results; 
       alert("Results are here: " + results); 
      } 
      // In all other cases: 
      else 
      { 
       // Return false (error): 
       return false; 
      } 
     }, function(error){ // Error: 
      global.logError(error); 
     }); 
    }, function(error){ // Error: 
     global.logError(error); 
    }, function(){ // Success: 
     consoleLog("SELECT complete!"); 
     alert("Return would be: " + resultSet); 
     return resultSet; 
    }); 
} // <-- global.insert = function(query) 

두통을 유발하는 부분은 위 기능을 사용하여 테이블에서 모든 것을 선택하려고합니다. 내가으로 실행하는 문제는 여기에

코드가 물건을 선택하려고 ... 이렇게, 나는 나를 넘어 비동기 동작을 얻을 수 있습니다 :

var results; 
if(results = db.select('SELECT * FROM my_table WHERE 1')) 
{ 
    alert("Result in index.html success: " + results); 
    // Do stuff with query results here... 
} 
else 
{ 
    alert("Result in index.html failure: " + results); 
} 

이 실행의

alert("Result in index.html failure: " + results); 

은 제가 처음 보는 출력물입니다. 선택이 시작되기 전에 실행되는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

또한 SELECT 함수에서 결과를 반환하는 방법을 모르겠습니다. 중첩 된 함수가 있으므로 정상적으로 처리하는 방법을 알지 못합니다. 그 부분에 대한 아이디어가 있습니까?

감사합니다.

답변

2

이러한 콜백 비동기입니다. 이것이 WebSQL이 설계된 방법입니다.

db.select 데이터를 사용할 수있게되기 전에 반환됩니다. 데이터에 액세스하는 모든 코드는 executeSql 또는 transaction 콜백 함수 또는 거기에서 호출 된 함수 내에 있어야합니다.

+0

지적 해 주셔서 감사합니다! 즉, 위에서 언급 한 접근 방식으로 데이터베이스 호출을 좀 더 쉽게 만들 수는 없습니까? 내가 이것을 성취 할 수있는 또 다른 방법이 있습니까? 지금 당장은 '힘든 길'을 할 것입니다. ;) –

+1

데이터베이스 호출은 결코 쉬운 일이 아닙니다. 항상 여러 기능을 함께 연결해야합니다. –

+0

다시 한번 감사 드리며 답을 수락했습니다. 동일한 문제에 직면 한 사람들을 위해 : 나는 코드 템플릿을 사용하여 코드를 만들었습니다 ... 완벽하지는 않지만 매번 처음부터 코딩하는 것보다 낫습니다! :) –

관련 문제