2013-05-15 3 views
5

Ich beginne mit der Bereitstellung einer Offline-Anwendung auf iPhones, aber es ist immer noch in der Entwicklungsphase. Ich habe eine einfache Fehlerbehandlung für meine Frage:Wie bekomme ich den Kontext eines Web Sql Fehlers?

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

Wenn ich mich die Anwendung testen, und eine Fehlermeldung erhalten, schaffe ich das finden, was die Abfrage Erzeugung der Fehler war. Aber wenn es meine Benutzer sind (entfernte Benutzer natürlich), ist es sehr schwierig, da die Fehlermeldungen nicht spezifisch sind.

Gibt es eine Möglichkeit, meinen Fehlermeldungen Kontextinformationen hinzuzufügen, z. B. die SQL-Abfrage oder ein Kommentarparameter?

Antwort

12

Sie könnten ein Muster wie folgt verwenden:

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 Antwort Abfrageparameter und einen freien Kontextzeichenfolge hinzuzufügen:

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

Dies diese Art von Fehler wird zurückgegeben:

Fehler (Funktion update_commande): konnte Anweisung nicht vorbereiten (1 keine solche Spalte: Feld3) in UPDATE-Tabelle SET Feld2 =?, Feld3 =? WHERE Feld1 =? (params: 1.63, 1449, 606)

Verwandte Themen