请问node+sqlite3如何判断sql语句是否执行成功?

        db.serialize(function() {
            db.run("BEGIN TRANSACTION")
            //创建表
            var table = fields['worksheet']
            var table_name = fields['file_name']
            var table_head = table[0]
            var ctable_sql = 'create table if not exists ' + table_name + '('
            var placeholder = ''
            for(var i = 0; i < table_head.length; i++){
                if(i == 0){
                    ctable_sql += table_head[i] + ' blob'
                    placeholder += '?'
                }else{
                    ctable_sql += ',' + table_head[i] + ' blob'
                    placeholder += ',?'
                }
            }
            ctable_sql += ')'
            db.run(ctable_sql)
            //插入数据
            var insert_sql = 'insert into ' + table_name + ' values(' + placeholder + ')'
            var stmt = db.prepare(insert_sql)
            for (var i = 1; i < table.length; i++) {
                stmt.run(table[i])
            }
            stmt.finalize()
            db.run("COMMIT TRANSACTION")
        })

请问在以上代码中如何判断“插入数据”这一段insert_sql是否执行成功或失败,并返回响应信息
非常感谢~~~~~

阅读 3.9k
2 个回答

stmt.run(table[i])更改下
stmt.run(table[i],funtion(err){

//执行失败
if(err){
    console.log(err);
}
//执行成功
console.log(this);  //this里有你想要的结果

})

没用过 sqlite,不过如果是 mysql 的话,执行语句都会有一个返回值,如果有错误会返回一个 error。你可以把 stmt.run 改成 const rs = stmt.run 试试,console 一下看看有没有返回值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题