2013-05-15 1 views
5

iPhone에서 오프라인 응용 프로그램을 배포하기 시작했지만 여전히 개발 단계에 있습니다. 내 쿼리에 대한 간단한 오류 처리기를 가지고 : 웹 Sql 오류의 컨텍스트를 가져 오는 방법은 무엇입니까?

db.transaction(tx) { 
    tx.executeSql("SELECT * FROM TABLE",[], successHandler, errorHandler); 
}); 
function errorHandler(transaction, error) { 
    alert("Error : " + error.message); 
} 

내가 응용 프로그램 자신을 테스트하고 오류가

, 나는 오류를 생성하는 쿼리 무엇인지 찾기 위해 관리 할 수 ​​있습니다. 그러나 내 사용자 (원거리 사용자)는 오류 메시지가 구체적이지 않기 때문에 매우 어렵습니다.

내 오류 메시지에 컨텍스트 정보를 추가하는 방법이 있습니까 (예 : SQL 쿼리 또는 메모 매개 변수)?

답변

12

당신은 이런 패턴을 사용할 수 있습니다

db.transaction(tx) { 
    doQuery(tx, "SELECT * FROM TABLE",[],theSuccessHandler) 
    }); 

    function doQuery(tx, query, values, successHandler) { 
    tx.executeSql(query, values, successHandler, errorHandler); 
    function errorHandler(transaction, error) { 
     alert("Error : " + error.message + " in " + query); 
    } 
    } 
0
내가 쿼리 매개 변수 및 무료 컨텍스트 문자열을 추가 할 Myrne 대답을 더한 향상된

:이 이런 종류의 오류를 반환합니다

function doQuery(tx, query, values, successHandler, context) 
{ 
    tx.executeSql(query, values, successHandler, errorHandler); 
    function errorHandler(transaction, error) 
    { 
     var text_context = context != undefined && context != "" ? "(" + context + ") " : ""; 
     alert("Error "+text_context+": " + error.message + " in " + query + " (params : "+values.join(", ")+")"); 
    } 
} 

:

오류 (update_commande) : UPDATE 테이블 SET 필드 2에서 명령문을 준비 할 수 없습니다 (해당 열 없음 : field3). =?, field3 =? 어디 field1 =? (매개 변수 : 1.63, 1449, 606)