如何与node.js一起使用sqlite3 – 什么是smt?

我想能够使用sqlite 3与node.js

我正在使用这里的代码,它完美的工作,但我真的不明白的代码。 例如:

var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(':memory:'); db.serialize(function() { db.run("CREATE TABLE lorem (info TEXT)"); var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); for (var i = 0; i < 10; i++) { stmt.run("Ipsum " + i); } stmt.finalize(); db.each("SELECT rowid AS id, info FROM lorem", function(err, row) { console.log(row.id + ": " + row.info); }); }); db.close(); 
  • 首先,我不明白什么样的stmt或它与smt.finalize做什么
  • (?)VALUES之后做什么(?)
  • 为什么要使用所有这些smt的东西,为什么不只是这样做:(它的工作原理我testing了它。) db.run("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT)"); db.run("INSERT INTO user VALUES (1,\"manu\")"); db.run("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT)"); db.run("INSERT INTO user VALUES (1,\"manu\")");

我希望我所有的问题都可以通过一个很好的文档链接来回答。

谢谢!

我想你是新来的sqlite3nodejs 。 variablesstmt只是一个variables,您可以将其更改为更像描述性的statementquery

(?)string更可能是variablesi的占位符。 所以你不会执行stmt.run()十次。 基本上它用stmt.run()的内容replace(?) ,所以它会像stmt.run('INSERT INTO lorem VALUES (Ipsum 1)') ,依此类推。

使用stmt.run('SQL QUERY HERE')很容易进行一个或几个操作。 但是,如果你需要迭代它,10000 stmt.run()似乎并不容易。

文档: https : //github.com/mapbox/node-sqlite3/wiki/API 。