sqlite3使用节点使用回调创建数据库

时间:2018-07-05 05:41:09

标签: node.js sqlite

我已经搜索了如何在Node.js中创建带回调的sqlite3数据库,但找不到任何链接。有人可以指向我介绍文档还是提供2-3行代码示例以实现以下目标:

  • 创建一个sqlite3数据库,如果由于某种原因创建失败,则会捕获错误。

这是我尝试过的:

     let dbCreate = new sqlite3.Database("./user1.db", sqlite3.OPEN_CREATE, function(err){

        if(!err){
           logger.infoLog("Successfully created DB file: " + dbFileForUser + " for user: " + username );
        } else {
           logger.infoLog("Failed to create DB file: " + dbFileForUser + ". Error: " + err );
        }
     });

     dbHandler[username]  = dbCreate;

执行此操作时,出现以下错误: “无法创建数据库文件:./database/user1.db。错误:错误:SQLITE_MISUSE:错误的参数或其他API滥用”

这个没有回调的调用就可以了。

var customDB = new sqlite3.Database(“ ./ custom.db”,sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);

但是,在这种情况下,我将不知道在创建数据库时是否遇到任何错误。

2 个答案:

答案 0 :(得分:7)

尝试一下:

let userDB = new sqlite3.Database("./user1.db", 
    sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, 
    (err) => { 
        // do your thing 
    });

Example

答案 1 :(得分:1)

@Irvin是正确的,我们可以看一下http://www.sqlitetutorial.net/sqlite-nodejs/connect/和 检查是否跳过了第二个参数,它的默认值为sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE 在这种情况下,如果数据库不存在,则将通过连接创建新数据库。

  

sqlite3.OPEN_READWRITE:用于打开数据库连接并执行读写操作。

     

sqlite3.OPEN_CREATE:创建数据库(如果不存在)并打开连接。

因此,这是您无需跳过第二个参数即可解决问题的第一种方法。

const sqlite3 = require("sqlite3").verbose();

let db = new sqlite3.Database('./user1.db', (err) => {
    if (err) {
        console.error(err.message);
    } else {
        console.log('Connected to the chinook database.|');
    }
});


db.close((err) => {
    if (err) {
        return console.error(err.message);
    }
    console.log('Close the database connection.');
});

这是连接数据库的第二种方式(已经由@Irvin回答了)。

const sqlite3 = require("sqlite3").verbose();

let db = new sqlite3.Database('./user1.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE
, (err) => {
    if (err) {
        console.error(err.message);
    } else {
        console.log('Connected to the chinook database.');
    }
});


db.close((err) => {
    if (err) {
        return console.error(err.message);
    }
    console.log('Close the database connection.');
});