最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

SQLite数据库写入硬盘后执行代码

IT培训 admin 7浏览 0评论

SQLite数据库写入硬盘后执行代码

我有以下示例代码(在node.js服务器上),它应该将数据插入到sqlite表中,然后运行将sqlite数据库文件复制到另一个目录的子进程。问题是复制的版本不包含新插入的数据。当我在执行命令之前设置超时时一切正常但我宁愿使用回调或事件。

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('test.db');

const exec = require('child_process').exec;

db.serialize(function() {

    var val = Date.now()/1000;

    db.run("INSERT INTO test (val) VALUES (?);", [val]);
    db.close();

    exec('/bin/cp -rf /path0/test.db /path1/');


});
回答如下:

正如文件所述关于近距离功能:

Database#close([callback])关闭数据库。

callback(可选):如果提供,则在成功关闭数据库或发生错误时将调用此函数。第一个参数是一个错误对象。如果为null,则关闭成功。如果未提供回调并且发生错误,则将在数据库对象上发出以错误对象作为唯一参数的错误事件。如果关闭成功,则无论是否提供回调,都会发出不带参数的关闭事件。

你应该能够在关闭数据库后提供关闭函数的回调函数,如果我理解你的代码那么它应该是这样的:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('test.db');

const exec = require('child_process').exec;

db.serialize(function() {
    var val = Date.now()/1000;
    db.run("INSERT INTO test (val) VALUES (?);", [val]);
    db.close(() => { exec('/bin/cp -rf /path0/test.db /path1/') });
});

参考是here!

SQLite数据库写入硬盘后执行代码

我有以下示例代码(在node.js服务器上),它应该将数据插入到sqlite表中,然后运行将sqlite数据库文件复制到另一个目录的子进程。问题是复制的版本不包含新插入的数据。当我在执行命令之前设置超时时一切正常但我宁愿使用回调或事件。

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('test.db');

const exec = require('child_process').exec;

db.serialize(function() {

    var val = Date.now()/1000;

    db.run("INSERT INTO test (val) VALUES (?);", [val]);
    db.close();

    exec('/bin/cp -rf /path0/test.db /path1/');


});
回答如下:

正如文件所述关于近距离功能:

Database#close([callback])关闭数据库。

callback(可选):如果提供,则在成功关闭数据库或发生错误时将调用此函数。第一个参数是一个错误对象。如果为null,则关闭成功。如果未提供回调并且发生错误,则将在数据库对象上发出以错误对象作为唯一参数的错误事件。如果关闭成功,则无论是否提供回调,都会发出不带参数的关闭事件。

你应该能够在关闭数据库后提供关闭函数的回调函数,如果我理解你的代码那么它应该是这样的:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('test.db');

const exec = require('child_process').exec;

db.serialize(function() {
    var val = Date.now()/1000;
    db.run("INSERT INTO test (val) VALUES (?);", [val]);
    db.close(() => { exec('/bin/cp -rf /path0/test.db /path1/') });
});

参考是here!

发布评论

评论列表 (0)

  1. 暂无评论