参数递归循环SQLite插入 - 是否必须提供所有列?

时间:2014-09-25 07:44:03

标签: sqlite insert

我在我的表中添加了一个新列,所以现在有4个而不是3个,现在在进行参数化插入(循环)时会出现以下错误:

table 'test' has 4 columns but 3 values were supplied

这是否意味着您必须在执行插入时为表的每个列编写查询代码(而不是仅填充要填充的列),并且SQLite不会仅在缺少列时添加默认值来自查询?

我的查询是:

"INSERT OR IGNORE INTO test VALUES (NULL, @col2, @col3)"

这是控制递归lopp中插入内容的代码:

sqlStatement.clearParameters();     
var _currentRow:Object = _dataArray.shift();
sqlStatement.parameters["@col2"] = _currentRow.val2;
sqlStatement.parameters["@col3"] = _currentRow.val3; 
sqlStatement.execute(); 

理想情况下,我希望将第4列留空,而不必将其编码到查询中。

谢谢你看看。

1 个答案:

答案 0 :(得分:1)

如果您插入的值少于列,则需要明确指定要插入的列。例如

INSERT INTO test(firstcolumn,secondcolumn) VALUES(1,2);

未指定的那些列将获得默认值,如果没有默认值,则为NULL。