我在程序中包含了SQLite和SQLite语句。我有一个名为PILE的表,而PILE表具有以下各列

词|含义|频率| C1 | C2 | C3 | C4 | C5

tx.executeSql(

"UPDATE PILE SET ? = COALESCE( (SELECT ? FROM PILE WHERE word = ?), 0 ) -1 WHERE word = ?",

            [category1, category1, incorrectmanualanswer, incorrectmanualanswer] ,
 errorcode  );

alert("down "+category1+"+"+incorrectmanualanswer);


上面的代码不执行。我在以下警报窗口中看到了正确的值

但是下面执行得很好

function screenONEpress(tx)
{
tx.executeSql(

"UPDATE PILE SET frequency = COALESCE( (SELECT frequency FROM PILE WHERE word = ?), 0 ) + 1

WHERE word = ?", [newEword, newEword] , errorcode   );

}

最佳答案

参数插值用引号引起来,并转义要在sql语句中使用的参数,并且不会在SQL代码中插入裸字。因此,生成的sql看起来像UPDATE PILE SET 'category1' = COALESCE( ...,这是一个语法错误。

07-28 10:28