Nodejs使用轻量级数据库SQLite
版权声明:本文为砷碲原创文章,未经允许,禁止转载本文链接:https://sdpro.top/blog/html/article/1231.html
专栏收录该内容
Hi I'm Shendi
对于开发桌面软件,数据库当然首选 SQLite 了,轻量且无需安装,可以非常简单的嵌入程序中。
而在 node.js 中,提供了 sqlite3 模块来使用 SQLite
安装依赖
npm install sqlite3
引入依赖
通过 require('sqlite3')
来引入依赖,执行 verbose
函数可以在出错时打印出详细的信息。
const sql = require('sqlite3').verbose();
创建并打开数据库
const db = new sql.Database("sql.db");
当数据库不存在时自动创建,并且返回一个用于操作此数据库的对象
还可以传入一个回调函数,当打开完成时执行
const db = new sql.Database('sql.db', (err) => {
if (err) throw err;
console.log("数据库初始化完成");
});
sqlite3库中的几乎所有函数都可以传入一个回调函数,像上面那样,并且执行是异步的
数据库文件会生成在项目的根目录,将其删除=删库。
执行语句
通过打开的数据库对象来执行语句,其中增、删、改使用 run
函数,查询使用 get
或 all
等
建表
db.run("CREATE TABLE user(id INT)");
上面的代码会创建一个 user
表,但通常会使用下面这种方式,当表不存在则新建,存在则不做操作
db.run("CREATE TABLE IF NOT EXISTS user(id INT, name VARCHAR(64))");
插入数据(Insert)
// 通过参数
db.run("INSERT INTO user VALUES(?,?)", 1, 'Shendi');
// 通过数组
db.run("INSERT INTO user VALUES(?,?)", [1, 'Shendi']);
当执行成功,回调函数中的 this
将会包含一些信息,例如 id 为主键且自增
const db = new sql.Database('sql.db');
db.run("CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(64))",(err) => {
if (err) throw err;
db.run("INSERT INTO user(name) VALUES(?)", ['Shendi'], function (err) {
if (err) throw err;
console.log(this, this.lastID, this.changes);
});
});
this
将会包含 lastId
代表插入数据的id,changes
代表影响的行数
需要注意的是,传递的函数使用 function () {}
这样的形式 this 才可以拥有信息,使用 () => {}
这样的形式,this 为 {}
修改数据
同插入数据
db.run('UPDATE user SET name=? WHERE id=?', ['砷碲', 4]);
删除数据
db.run('DELETE FROM user WHERE id=?', [4]);
查询数据
db.all("SELECT * FROM user", (err, rows) => {
if (err) throw err;
console.log(rows);
});
其中 rows
是数据数组(Array),可以非常方便的直接使用。
关闭数据库
对资源要求高的话可以在使用完成将数据库关闭
db.close();
END
本文链接:https://sdpro.top/blog/html/article/1231.html♥ 赞助 ♥
尽管去做,或许最终的结果不尽人意,但你不付出,他不付出,那怎会进步呢?