2013-05-15 9 views
5

Rozpoczynam wdrażanie aplikacji offline na iPhone'ach, ale wciąż jest pod silnym rozwojem. Mam proste obsługi błędu dla mojego zapytania:Jak uzyskać kontekst błędu Web Sql?

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

Kiedy sprawdzić się wniosek, i pojawia się błąd, udaje mi się znaleźć to, co było zapytanie generuje błąd. Ale kiedy to moi użytkownicy (oczywiście odlegli użytkownicy), jest to bardzo trudne, ponieważ komunikaty o błędach nie są specyficzne.

Czy istnieje sposób dodania informacji kontekstowych do moich komunikatów o błędach, na przykład zapytania sql lub parametru komentarza?

Odpowiedz

12

Można użyć wzoru takiego:

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

I ehanced Myrne odpowiedź dodać parametry kwerendy i bezpłatną ciąg kontekstowego:

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(", ")+")"); 
    } 
} 

ten powróci tego rodzaju błędu:

Błąd (funkcja update_commande): nie można przygotować instrukcji (1 nie ma takiej kolumny: pole3) w tabeli AKTUALIZUJ pole SET2 =?, field3 =? WHERE field1 =? (params: 1.63, 1449, 606)