javascript - 如何使用参数插入多行?

标签 javascript angularjs node.js sqlite ionic-framework

我正在尝试使用 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/

相关文章:

javascript - AngularJS 不计算表达式

javascript - sequelize 查询哪里喜欢

angularjs - angularjs的业务逻辑在哪里?

angularjs - 更新数组时如何避免刷新 ng-repeat DOM 列表

javascript - Selenium WebDriver findElements 返回对象

node.js - supertest:测试重定向url

javascript - 删除点击时的值

javascript - Vue.js typescript 界面不工作

javascript - 通过所选选项属性设置表单输入属性

javascript - 使用 angular $http.get 从服务器下载文件