gpt4 book ai didi

angularjs - 语句字符串中“?”的数量与参数计数不匹配

转载 作者:行者123 更新时间:2023-12-03 18:50:11 28 4
gpt4 key购买 nike

我正在尝试使用WebSQL与我的API进行同步,但是出现以下错误:

语句字符串中'?'的数量与参数计数不匹配。

我正在关注this教程

我不知道发生了什么,我在这里想念什么?

function createTable() {
db.transaction(
function (tx) {

tx.executeSql('CREATE TABLE IF NOT EXISTS COUNTRY (id, countryName, countryCode)');
tx.executeSql('CREATE TABLE IF NOT EXISTS LOCATION (id, locationName)');
tx.executeSql("CREATE TABLE IF NOT EXISTS clientes (" +
"clientes_id Integer PRIMARY KEY AUTOINCREMENT, " +
"_criado Text, " +
"_modificado Text, " +
"_status Text, " +
"id_rm Integer, " +
"credencial_id Integer, " +
"informacao_adicional, " +
"nome, " +
"tipo, " +
"CONSTRAINT unique_clientes_id UNIQUE ('clientes_id'))");
tx.executeSql('CREATE INDEX IF NOT EXISTS "clientes.index_clientes_id" ON "clientes"("clientes_id");');



},
txErrorHandler,
function () {
log('clientes table created successfully');
}
);
}
function getLastSync() {
db.transaction(
function (tx) {
var sql = "SELECT MAX(_modificado) as lastS FROM clientes";


tx.executeSql(sql,
function (tx, results) {


var lastSync = results.rows.item(0).lastS;
console.log(lastSync);

}
);

},
txErrorHandler,
function () {
log('error');
}
);
}

function getChanges(syncURL, modifiedSince) {


ServiceClientes.getAll(syncURL, modifiedSince).success(function (data) {
log("The server returned " + data.length + " changes that occurred after " + modifiedSince);
}).error(function (error) {
console.log(error);
});


}

function applyChanges() {

angular.forEach(data.dados, function (item) {
db.transaction(
function (tx) {
log(item.nome + " : " + item.tipo_pessoa);

tx.executeSql('INSERT OR REPLACE INTO clientes (nome, tipo, ' +
'_criado,' +
'_modificado , ' +
'_status, ' +
'id_rm, ' +
'informacao_adicional ) VALUES (?,?,?,?,?,?,?)',
[item.nome, item.tipo_pessoa, item.criado, item.modificado, item.status, item.id, item.informacoes_adicionais]);
},
txErrorHandler,
function (tx) {
}
);
});
}

function sync(syncURL) {


getLastSync(function (lastSync) {
getChanges(syncURL, lastSync, function (changes) {
if (changes.length > 0) {
applyChanges(changes);
} else {
console.log('Nothing to synchronize');
}

}
);
});

}

最佳答案

您应该利用executeSql的第二个参数将数据传递到参数化的SQL查询中,而不是将它们连接在一起。串联是一种不好的做法,并且其中一个字段中可能带有引号或问号,这可能会导致您描述的错误。

因此,使用类似:

tx.executeSql('INSERT OR REPLACE INTO clientes (nome, tipo, ' +
'_criado,' +
'_modificado , ' +
'_status, ' +
'id_rm, ' +
'informacao_adicional ) VALUES (?,?,?,?,?,?,?)',
[item.nome, item.tipo_pessoa, item.criado, item.modificado, item.status, item.id, item.informacoes_adicionais]);

关于angularjs - 语句字符串中“?”的数量与参数计数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28649574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com