2013-12-13 73 views
1

誰能告訴我,爲什麼以下兩個SQL精簡版插入語句工作:爲什麼不會這個SQL精簡版插入statment工作

tx.executeSql("INSERT INTO EVENTS ('name','altId','time') VALUES (?,?,?)",["one", "two","three"]); 

tx.executeSql("INSERT INTO EVENTS ('name','altId') VALUES (?,?)",[("one", "two"),("three", "four")]); 

,但低於我想出了答案如下,以this question一個聲明:

tx.executeSql("INSERT INTO EVENTS ('name','altId','time') VALUES (?,?,?)",[("one", "two","three"),("four", "five","six")]); 

拋出錯誤:「?」在聲明中串5號s不匹配參數計數

+0

「不適用」對你來說意味着什麼? – laalto

+0

它引發錯誤代碼:5(請參閱編輯) –

+0

您已經指定了3列來插入,但只傳遞2個值......並且您可以使用err.message來獲取消息字符串。 –

回答

0

你必須給一樣多的參數療法e在SQL語句中。 如果你想多次執行該語句,你必須告訴電腦執行語句多次:

tx.executeSql("INSERT INTO EVENTS (name,altId,time) VALUES (?,?,?)", 
       ["one", "two","three"]); 
tx.executeSql("INSERT INTO EVENTS (name,altId,time) VALUES (?,?,?)", 
       ["four", "five","six"]); 

多行插入(這是不是在所有的SQLite版本支持,所以你不應該使用它)只是一個SQL語句有多個參數:

tx.executeSql("INSERT INTO EVENTS (name,altId,time) VALUES (?,?,?),(?,?,?)", 
       ["one", "two","three","four", "five","six"]); 

這可能是一個更好的主意,編寫調用單行INSERT多次的輔助功能。

+0

有沒有辦法在一個語句中插入多行?即「INSERT INTO EVENTS(name,altId,time)VALUES(」joe,1,「5pm」),(「bill,1,」6pm「)」的參數化版本「 –

+0

您好CL,再次感謝您的關注題。我無法讓你的多角色例子工作,我得到消息「number of'?在語句字符串中與參數數量不匹配」。最好的做法是爲每行執行一個單獨的INSERT語句似乎也不正確,因爲這看起來有可能變得非常昂貴。 –

+0

爲什麼它應該更貴?這不是客戶端/服務器數據庫。 –