2012-05-06 5 views
0

현재 SQLite 데이터베이스를 사용하고있는 웹 응용 프로그램을 개발 중입니다. 데이터베이스를 만들고 정보를 쓸 수는 있지만 나중에 내 코드에서 저장된 정보를 사용할 수 없습니다.jQuery로 SQLite DB를 읽을 수 없습니다.

function GetItemFromDB(request, level, callback) { 
DB.transaction(
     function (transaction) { 
      transaction.executeSql(
       'SELECT ? FROM levels WHERE id=?;', 
       [request, level], function (transaction, results) { 
        callback(results); 
       }); 
     } 
); 

}

그때 나는 게임에서 레벨을 작성하기 위해 저장된 정보를 사용하려면 : 여기

내가 데이터베이스에서 읽기 위해 사용하고 코드입니다. 그래서 같이 이렇게 :

가에 P to P 내가 원하는 정보를 포함하는 행을, 그리고 레벨이 게임의 현재 수준
var ptop = GetItemFromDB('ptop', level); 

,

그래서 내 질문은 : 어떻게에서 스토 렌 정보를로드 할 수 있습니다 데이터베이스에 저장하고 나중에 코드에서 사용합니까? 시간 :

답변

2

에 대한

덕분에 난 당신이 비동기 WebSQL API를 사용하여 반환 값을 얻을려고 생각, 그래서 당신은 기능 GetItemFromDB에서 반환 값을 수신하지 않습니다.

function GetItemFromDB(request, level, callback) { 
    DB.transaction(function(tx){ 
     tx.executeSql('SELECT ' + request + ' FROM levels WHERE id = ?', [level], function(tx, results){ 
      callback(results); 
     }, errDB); 
    }, errDB); 
} 

function errDB(err) { 
    console.log("Error processing SQL: " + err.code); 
} 

function getItemCallback(results) 
{ 
    alert("Result rows length: " + results.rows.length); 

    //result.rows are the results from the SQL 
    //if you know the are only one result, you can 
    //work with results.rows.item(0), else iterative over rows 
    alert("ptop column of row: " + results.rows.item(0).ptop); 
} 

를 그리고 단순히 전화 기능 : 당신이 당신의 DB 객체에서 비동기 적으로 데이터를 읽고 싶다면

,이 같은 것을 시도해야

GetItemFromDB('ptop', level, getItemCallback); 

을 원하는 경우 또는 필요 동기 API를 사용하여, 나는이 링크가 도움이 될 수 있다고 생각한다. http://www.w3.org/TR/webdatabase/#synchronous-database-api

+0

고맙지만, 코드를 사용할 때 여전히 "정의되지 않음"을 리턴한다. 그러나 result.rows.length는 1입니다. id = 1 인 값을 반환하도록하려면 어떻게해야합니까? – Snapcount

+0

죄송합니다, 변수 '결과'에 (으)를 (를) 잊어 버렸습니다. 아마도 그게 문제였습니다! 또한 준비된 명령문의 매개 변수로 전달할 수 있는지 확실하지 않기 때문에 명령문에 직접 연결하여 '요청'을 변경했습니다. 다시 시도해주세요. 이제 알려주세요. – corteggo

+0

당신은 내 영웅입니다! 그것은 매력처럼 작동합니다 : D – Snapcount

관련 문제