在插入之前存在NodeJS和SQLite3检查行

时间:2014-10-25 00:59:17

标签: node.js sqlite

var db = new sqlite3.Database("items.db");
db.serialize(function()
    {
        var stmt = " SELECT * FROM items;";
        db.get(stmt, function(err, row){
            if(err) throw err;
            if(typeof row == "undefined") {
                    db.prepare("INSERT INTO items (ID) VALUES(?)").run("item1").finalize();
            } else {
                console.log("row is: ", row);
            }
        });
    });

上面的代码段会产生以下错误:

events.js:72
   throw er; // Unhandled 'error' event
              ^
Error: SQLITE_MISUSE: Database handle is closed

我不确定我做错了什么,这是最好的方法吗?

我也尝试过使用:

var stmt = " SELECT EXISTS(SELECT * FROM monitor LIMIT 1)";

检查条目是否存在。

谢谢,

d

1 个答案:

答案 0 :(得分:1)

我终于弄明白了问题所在。我有一个db.close();在我没注意的文件末尾调用。我还没有习惯在node.js中异步运行的东西。

events.js文件似乎位于node-sqlite包中。

感谢所有试图提供帮助的人。

d