Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将sqlite3与node.js一起使用-什么是smt?_Javascript_Node.js_Sqlite - Fatal编程技术网

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

Javascript 如何将sqlite3与node.js一起使用-什么是smt?,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,我希望能够将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("INS

我希望能够将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();
var sqlite3=require('sqlite3').verbose();
var db=new sqlite3.Database(':memory:');
序列化(函数(){
run(“创建表lorem(信息文本)”;
var stmt=db.prepare(“插入到lorem值(?);
对于(变量i=0;i<10;i++){
stmt.run(“Ipsum”+i);
}
stmt.finalize();
db.each(“选择rowid作为id,从lorem中选择信息”),函数(err,row){
console.log(row.id+“:”+row.info);
});
});
db.close();
  • 首先,我不明白什么是
    stmt
    ,或者它对
    smt都不起什么作用。完成
  • 值之后,
    (?)
    做什么
  • 为什么要使用所有这些smt的东西,为什么不这样做:(它可以工作,我测试过。)
    db.run(“创建表用户(id整数主键,名称文本)”;
    db.run(“插入用户值(1,\'manu\”)
我希望我所有的问题都能通过一个好的文档链接得到解答


谢谢大家!

我猜您对
sqlite3
nodejs
都是新手。变量
stmt
只是一个变量,您可以将其更改为更具描述性的变量,如
语句
查询

(?)
字符串很可能是变量
i
的占位符。 因此,您不会执行
stmt.run()
十次。基本上,它将
(?)
替换为
stmt.run()
中的内容,因此类似于
stmt.run('INSERT-INTO-lorem VALUES(Ipsum 1)')
,依此类推

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


文档:。

对于前3个问题,请查看准备好的陈述。基本上这就是你的答案。至于最后一个,我们无法告诉您,当您没有显示此代码时,您做错了什么。因此,如果我想添加另一列,
db.run(“创建表lorem(信息文本,名称文本)”如何在名称中插入值?是的,但是如何使用
smt.run
插入值?变量
stmt
只是一个占位符,因此您不会多次调用
db.run()
。如果您想,并且希望应用程序能够扩展,可以使用
stmt
。很抱歉,
创建表“TEXT”
是用于数据类型的。您可以使用
db.run(“insert into lorem VALUES('Some info','Manu')”)
将值插入表中。请注意单引号和双引号。它用于区分节点字符串和SQLite3查询字符串。您还可以执行
db.run(“插入到lorem值(?)”、“一些信息”、“手动”)
。如果执行此操作,则会出现错误:manu@hecht:~$node-web/node-sqltest.js events.js:85 thrower;//未处理的“error”事件^error:SQLITE_error:table lorem有2列,但在出现错误时提供了1个值(本机)manu@hecht:~$