【发布时间】:2016-11-18 03:33:30
【问题描述】:
我需要在 sqlite3 表中插入 10 行,插入完成后,将新行的 10 个 id 传递给数组中的回调函数。
我的问题是我不知道如何使准备好的语句一次执行多个插入。我找到了这篇关于如何使用 mySQL 执行此操作的帖子。
但这不适用于 sqlite。我的代码如下:
params = [[1,2],[3,4],[5,6],[7,8]]
stmt = db.prepare("INSERT INTO test (num1, num2) VALUES (?)");
stmt.all([params], function(err, res) {
if(err) {
console.log(err);
return;
} else {
createdIDs = []
for (i in result) {
createdIDs.push(result[i].id);
}
nextFunction(createdIDs);
}
});
这给出了以下错误:
Error: SQLITE_ERROR: 1 values for 2 columns
at Error (native)
表的架构是这样的:
db.run('CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, num1 INTEGER NOT NULL, num2 INTEGER NOT NULL)')
编辑:使用 Alvaro 的解决方案,我现在收到此错误消息:
{ [Error: SQLITE_CONSTRAINT: NOT NULL constraint failed: test.num1] errno: 19, code: 'SQLITE_CONSTRAINT' }
【问题讨论】:
-
你确定你和答案一样吗?
-
@AlvaroJoao 是的,代码应该和其他答案一样。不同的是我使用的是 sqlite3 而不是 mysql
-
刚刚回答了你的问题...如果我帮助了你,请点赞并标记为正确答案
-
VALUES (?) 你还需要改成 VALUES (?1,?2)
-
请在问题中添加表格的约束?
标签: javascript node.js sqlite sql-insert bulkinsert