我正在开发一个需要保存签名的项目(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');
}
});
的 WHERE 的的
签名变量包含base64图像
signature_laps & signature_attempts 变量包含整数
cust_code ,月& 年只是重要的关键参数
ON SQLITE
签名字段是BLOB
在100%的2%中,2%的失败仍然表示成功,即使签名不是保存但是当我再次尝试相同的笔划时它成功保存。即使查询未成功执行,为什么仍然继续成功消息?它应该继续失败的消息。这是一个手机错误吗?
我在android ICS和jquery mobile下运行了phonegap。
有什么想法吗?提前谢谢你们。
答案 0 :(得分: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);