如何获取Web Sql错误的上下文

How to get the context of a Web Sql error?

本文关键字:Sql 错误 上下文 Web 何获取 获取      更新时间:2023-09-26

我开始在iphone上部署一个离线应用程序,但它仍在大量开发中。我有一个简单的错误处理程序为我的查询:

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

当我自己测试应用程序并得到一个错误时,我设法找到生成错误的查询是什么。但是当它是我的用户(当然是远程用户)时,这就非常困难了,因为错误消息不是特定的。

是否有一种方法来添加上下文信息到我的错误消息,例如sql查询,或评论参数?

您可以使用这样的模式:

  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);
    }
  }

我增强了myne答案以添加查询参数和自由上下文字符串:

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

这将返回这样的错误:

错误(function update_command): could not prepare statement (1 no such column: field3) in UPDATE table SET field2 = ?, field3 = ?WHERE field1 = ?(params: 1.63, 1449, 606)