0

我正在做一个需要保存签名的项目(Image Base 64)。目前它工作正常,但由于未知原因,有时 100% 中约有 2% 失败。

      $(document).ready(function() {    
            var db = window.openDatabase("TEST", "1.0", "TEST", 20000000 );
            db.transaction(insertSignature, errorCB, insertSignatureSuccess);

            function insertSignature(tx)
            {
                var signature               = $.trim($('#sig').val());
                var signature_laps          = $('#signature_laps').val();
                var signature_attempts      = $('#signature_attempts').val();
                var sql = 'UPDATE signature_table SET signature = "'+signature+'", signature_lap = "'+signature_laps+'", signature_attempt = "'+signature_attempts+'", modified_date = datetime("now", "localtime")' + 
                        ' WHERE cust_code = "'+cust_code+'" AND cycle_month = "'+month+'" AND cycle_year = "'+year+'"';
                tx.executeSql(sql);
            }

            function insertSignatureSuccess(tx)
            {
                alert('success');
            }

            function errorCB(err) 
            {
               alert('failed');
            }
    });

在哪里

签名变量包含 base64 图像

signature_laps & signature_attempts变量包含整数

cust_code , month & year只是重要的关键参数

在 SQLITE 上

签名字段是 BLOB

在 100% 中的 2% 上,即使签名没有保存,2% 的失败仍然表示成功,但是当我用相同的笔划再次尝试时,它成功保存。为什么即使查询未成功执行,它仍会继续显示成功消息?它应该继续处理失败的消息。它是一个phonegap错误吗?

我在 android ICS 和 jquery mobile 下运行 phonegap。

任何想法?提前谢谢大家。

4

1 回答 1

0

我不知道这是否是错误的原因,但使用 SQL 命令你最好将它们说明如下:

var sql='UPDATE signature_table SET signature = ?, signature_lap = ?, ' + 
'signature_attempt = ?, modified_date = datetime("now", "localtime") ' + 
'WHERE cust_code = ? AND cycle_month = ? AND cycle_year = ?';
tx.executeSql(sql, [signature, signature_laps, signature_attempts, cust_code, month, year]);

此外,看到这种情况,将成功和回调函数放在事务中似乎是可取的:

tx.executeSql(sql, [signature, signature_laps, signature_attempts, cust_code, month, year], insertSignatureSuccess, errorCB);
于 2013-05-06T12:07:09.540 回答