2013-05-15 31 views
5

Tôi bắt đầu triển khai một ứng dụng ngoại tuyến trên iPhone, nhưng nó vẫn còn dưới sự phát triển mạnh. Tôi có một xử lý lỗi đơn giản cho truy vấn của tôi:Làm thế nào để có được bối cảnh của một lỗi Web Sql?

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

Khi tôi thử nghiệm bản thân mình các ứng dụng, và nhận được một lỗi, tôi quản lý để tìm ra truy vấn tạo ra các lỗi là gì. Nhưng khi đó là người dùng của tôi (người dùng ở xa, tất nhiên), nó rất khó, vì các thông báo lỗi không cụ thể.

Có cách nào để thêm thông tin ngữ cảnh vào các thông báo lỗi của tôi, ví dụ truy vấn sql hoặc tham số nhận xét không?

Trả lời

12

Bạn có thể sử dụng một mô hình như thế này:

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

tôi ehanced câu trả lời Myrne để thêm tham số truy vấn và một chuỗi bối cảnh tự do:

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

này sẽ trở lại loại hình báo lỗi:

Lỗi (chức năng update_commande): không thể chuẩn bị câu lệnh (1 không có cột như vậy: field3) trong bảng UPDATE SET field2 =?, field3 =? WHERE field1 =? (thông số: 1.63, 1449, 606)

Các vấn đề liên quan