我是phonegap的新手。我创建了包含两个表的数据库。它显示sql错误undefined.I使用下面的代码创建另一个表,几乎没有修改。那个表运行正常。但是下面的代码不能正常工作。我无法找到bug。它是错误的。请帮助。
function insertVehicleData(tx)
{
var db=window.openDatabase("FuelDatabase","1.0","FuelData",200000);
db.transaction(vehicleDB,errorVDB,successVDB);
}
function vehicleDB(tx)
{
tx.executeSql('CREATE TABLE IF NOT EXISTS vehicledata (vhname TEXT, vmake TEXT,vtype TEXT,currency TEXT)');
var vhname=document.getElementById('vhname').value;
var vmake= document.getElementById('vmake').value;
var vtype=document.getElementById('vtype').value;
var currency=document.getElementById('currency').value;
tx.executeSql("INSERT INTO vehicledata (vhname,vmake,vtype,currency) VALUES ('"+ vhname +"','"+ vmake +"' , "+ vtype+", '"+ currency +"')");
}
function errorVDB(tx,error)
{
alert("error not saved:"+error);
}
function successVDB()
{
alert("your data saved");
}
答案 0 :(得分:0)
尝试替换此行:
tx.executeSql("INSERT INTO vehicledata (vhname,vmake,vtype,currency) VALUES ('"+ vhname +"','"+ vmake +"' , "+ vtype+", '"+ currency +"')");
这一行:
tx.executeSql("INSERT INTO vehicledata (vhname,vmake,vtype,currency) VALUES (?,?,?,?)",[vhname,vmake,vtype,currency]);
原因在于,在插入值时,可能需要转义的项目或者它们可以“破坏”该语句。这样做可以确保正确转义值。