2013-05-15 16 views
5

Inizio a distribuire un'applicazione offline su iPhones, ma è ancora in fase di sviluppo. Ho un semplice gestore degli errori per la mia domanda:Come ottenere il contesto di un errore Sql Web?

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

quando prova me stesso l'applicazione, e si ottiene un errore, riesco a trovare ciò che era la query che genera l'errore. Ma quando sono i miei utenti (utenti distanti, ovviamente), è molto difficile, in quanto i messaggi di errore non sono specifici.

C'è un modo per aggiungere informazioni di contesto ai miei messaggi di errore, ad esempio la query sql o un parametro di commento?

risposta

12

È possibile utilizzare un modello come questo:

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

ho esaltata risposta Myrne aggiungere parametri di query e una stringa di contesto libera:

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

Ciò restituirà questo tipo di errore:

Errore (funzione update_commande): impossibile preparare istruzione (1 nessuna colonna: campo3) nella tabella UPDATE SET campo2 =?, campo3 =? DOVE field1 =? (parametri: 1.63, 1449, 606)

Problemi correlati