博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node-sqlite3的事务执行方法
阅读量:7020 次
发布时间:2019-06-28

本文共 2536 字,大约阅读时间需要 8 分钟。

2015年12月28日

直接传入执行事务的所有SQL语句不可行。

上午不知道为什么,使用navicat直接执行sql语句的时候,运行事务都不会成功。下午运行成功了,遂放心开始使用node.js开始编程。

后台处理函数:

//新增内容function addTableInfo(res, data) {    var data = JSON.parse(data);    var sql = '';    var returnMsg = '';    rowSql = 'INSERT INTO ' + data.tableName + ' ' + data.tableRows + ' VALUES ';    db.serialize(function() {        db.run('BEGIN TRANSACTION;');        for(var i = 0; i < data.vals.length; i++) {            sql = rowSql + data.vals[i] + '; ';            console.log(sql);             var k = 0;            db.run(sql, function(err, rows) {                if(!err) {                    k++;                    //当所有的回调都执行完成时,返回错误                    if(k == (data.vals.length)) {                        console.log('returnMsg返回错误' + returnMsg);                        if(returnMsg) {                            res.end(returnMsg);                        } else {                            res.end('新增成功!');                        };                                            };                } else {                    returnMsg = returnMsg + '【数据:' + data.vals[k] + '新增失败,' + err + '】';                    k++;                    if(k == (data.vals.length)) {                             if(returnMsg) {                            console.log('returnMsg返回错误:' + returnMsg);                            res.end(returnMsg);                        } else {                            res.end('新增成功!');                        };                    };                };                });        };               db.run('COMMIT TRANSACTION;');    });  };

 

如果data的内容是:

{"tableName":"eqpt_info","tableRows":"(eqpt_code, eqpt_name, eqpt_ty

pe, eqpt_address, create_time)","vals":["(1,2,2,2,2)","(1,3,2,2,2,)","(1,4,2,2,2
)","(1,5,2,2,2,4)"]}

那么返回的returnMsg数据是:

returnMsg返回错误【数据:(1,3,2,2,2,)新增失败,Error: SQLITE_ERROR: near ")": sy

ntax error】【数据:(1,5,2,2,2,4)新增失败,Error: SQLITE_ERROR: 6 values for 5 c
olumns】

需要使用node-sqlite3的 

也从别人写的IOS的sqlite3事务执行方法中得到了灵感。

 

 

 

 

 

sqlite3的事务执行方法和其它的数据库不太相同。

使用sqlite3的事务的时候,直接传入:

BEGIN TRANSACTION;INSERT INTO eqpt_info (eqpt_code, eqpt_name, eqpt_type, eqpt_address, create_time) VALUES (1,2,2,2,2);INSERT INTO eqpt_info (eqpt_code, eqpt_name, eqpt_type, eqpt_address, create_time) VALUES (1,2,2,2,2);INSERT INTO eqpt_info (eqpt_code, eqpt_name, eqpt_type, eqpt_address, create_time) VALUES (1,2,2,2,2);INSERT INTO eqpt_info (eqpt_code, eqpt_name, eqpt_type, eqpt_address, create_time) VALUES (1,2,2,2,2); COMMIT TRANSACTION;

这样的SQL语句,不会执行成功。

 

转载于:https://www.cnblogs.com/lswit/p/5082452.html

你可能感兴趣的文章
线代之计算特征值与特征向量
查看>>
uvm_hdl——DPI在UVM中的实现(四)
查看>>
as和handle交互(json)
查看>>
[POJ1155]TELE(树形背包dp)
查看>>
查找表索引
查看>>
ctf--php
查看>>
leetcode921
查看>>
leetcode1003
查看>>
MYSQL的启动
查看>>
leetcode--589. N叉树的前序遍历 非递归实现
查看>>
AC自动机+高斯消元 hdu 5955 Guessing the Dice Roll 16沈阳icpc
查看>>
Visual2010解决方案单个项目的执行
查看>>
九九乘法表:使用"类名.方法名" 调用静态方法
查看>>
Linux命令学习笔记
查看>>
循环链表
查看>>
(一)mybatis简易搭建
查看>>
接口 与 抽象类
查看>>
写出好简历吧
查看>>
Android IOS WebRTC 音视频开发总结(七六)-- 探讨直播低延迟低流量的粉丝连麦技术...
查看>>
AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203
查看>>