nodejs and sqlite3

转自:https://blog.csdn.net/wap1981314/article/details/81185768

1、下载
https://nodejs.org/en/download/  or http://nodejs.cn/download/


2、安装sqlite3
npm install sqlite3    npm命令在目录bin下
查看版本npm list sqlite3 

3、sqlite3 API介绍
在nodejs的模块安装模块下,进入sqlite3/lib目录下,打开sqlite3.js文件查看,操作数据库主要是用Database,Database相关的函数有:run、prepare、each、get、all、exec、map和close。

3.1、Database 
用法:new sqlite3.Database(filename,[mode],[callback])。

新建并打开数据库

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

new sqlite3.Database(file[,mode][,callback])
var db = new sqlite3.Database("mydb.db", function(err) {
  if (err) throw err;
  else console.log("create database ok");
});

sqlite3.OPEN_READONLY(只读)
sqlite3.OPEN_READWRITE(可读写)
sqlite3.OPEN_CREATE(可以创建)
默认为 OPEN_READWRITE |OPEN_CREATE
 

3.2、close
用法:close([callback])。

功能:关闭和释放数据库对象。


mydb.close(function(err) {
  if (err) throw err;
 else console.log("create database ok");
});

3.3、run
用法:run(sql,param,...],[callback])。

功能:运行指定参数的SQL语句,完成之后调用回调函数,它不返回任何数据,在回调函数里面有一个参数,SQL语句执行成功,则参数的值为null,反之为一个错误的对象,它返回的是数据库的操作对象。在这个回调函数里面当中的this,里面包含有lastId(插入的ID)和change(操作影响的行数,如果执行SQL语句失败,则change的值永远为0)。

exec执行某语句,同run,区别在于 exec可以执行多条语句。

mydb.run(`create table user (id INT,name CHAR(20), age INT)`, function(err) {
  if (err) throw err;
  else  console.log("Create table ok");
});

mydb.run(`insert into user values (1,"wang",30)`, function(err) {
  if (err) throw err;
  else console.log("Add user ok");
});

3.4 exec(sql, [callback]);
 

var sql = "";  
for (var i = 0; i < 100; i++) {
    //sql+= `insert into user values (${i},"name"+$(i), $(i)/2);`;
    sql+= `insert into user values ('+i+',"name"+i+','+ i/2+');`;
  }
  mydb.exec(sql, function(err) {
    if (err) throw err;
    else console.log("Insert 100 items ok);
  });

3.5、get 仅返回查询结果的第一条数据
用法:get(sql,[param,...],[callback])。

功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为结果集中的第一行数据,反之则回调函数中只有一个参数,只参数为一个错误的对象。

mydb.get("select * from user where age >20", function(err, row) {
  if (err) throw err;
  else console.log(row);
});

3.6、all
用法:all(sql,[param,...],[callback])。

功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为查询的结果集,反之,则只有一个参数,且参数的值为一个错误的对象。

mydb.all("select * from user", function(err, rows) {
  if (err) throw err;
  else console.log(rows);
});

3.7 each

each(sql, [param, ...], [callback], [complete])

对于每次返回的结果,都会调用回调,

complete则是所有结果都返回后的回调,第二个参数为返回的总条数

mydb.each("select * from user", function(err, row) {
    if (err) throw err;
    console.log(row);
  },
  function(err, count) {
    if (err) throw err;
    console.log(count);
  }
);

3.8、prepare
用法:prepare(sql,[param,...],[callback])。

功能:预执行绑定指定参数的SQL语句,返回一个Statement对象,如果执行成功,则回调函数的第一个参数为null,反之为一个错误的对象。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值