我正在尝试使用 ionic 框架在 SQLite 中插入多行。单行插入工作正常。
即使我跑了
INSERT INTO categories (category_id, category_name,category_type) VALUES (1,"test",1),(2,"test again", 2);
这也很好用。 但是当我尝试创建一个动态字符串时,它给我错误“无法准备语句(1 靠近“?”:语法错误)”。
.success((function (result) {
var query = "INSERT INTO categories (category_id, category_name,category_type) VALUES ?";
var data = [];
result.forEach(function (category) {
data.push([category.id, category.category_name, category.category_type]);
});
$cordovaSQLite.execute(db, query,[data]).then(function (res) {
console.log("inserted");
}, function (err) {
console.dir(err);
});
最佳答案
向您的插入添加多个参数,就像您在测试查询中所做的那样(您提到的第一个),然后将所有参数作为一维数组传递:
.success((function (result) {
var query = "INSERT INTO categories (category_id, category_name,category_type) VALUES ";
var data = [];
var rowArgs = [];
result.forEach(function (category) {
rowArgs.push("(?, ?, ?)");
data.push(category.id);
data.push(category.category_name);
data.push(category.category_type);
});
query += rowArgs.join(", ");
$cordovaSQLite.execute(db, query,[data]).then(function (res) {
console.log("inserted");
}, function (err) {
console.dir(err);
});
此代码将生成如下查询:
INSERT INTO categories (category_id, category_name,category_type) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?);
并且您的数据数组的大小为 12,其中数组中的每 3 个条目将是要插入的一行数据。
这些数字只是示例,它们取决于result
的大小。
关于javascript - 如何使用参数插入多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30181226/