sqlite for node
1.intro
to understand how sqlite3 works, we can know it from following tutorials:
- 安装
- 如何连接到数据库: 这部分将展示如何连接到内存数据库和磁盘数据库。
- 如何从表中查询数据:这部分将告诉你多种办法进行查询
- …暂略,后面打算借助实例再进行记录,或许再看看sequelize
2.install
npm install sqlite3
After installing the sqlite3 module, you are ready to connect to a SQLite database from a Node.js application.
3.connecting to database
连接到内存数据库
- 第一步:导入sqlite3模块
const sqlite3 = require("sqlite3").verbose();
Notice that the execution mode is set to verbose to produce long stack traces.
注意,当执行模式设为verbose时,将产生很长的堆栈追踪。
- 第二步:构造Database对象
database()函数有两个个参数:
- 数据库文件:内存数据库或磁盘数据库文件
- callback function
let db = new sqlite3.Database(':memory:', (err) => {
if (err) {
return console.error(err.message);
}
console.log('Connected to the in-memory SQlite database.');
});
回调函数的第一个参数是err,如果在打开数据库的过程中发生了错误,err将不为null。
- 第三步:关闭数据库
db.close();
与Database()相似的是,close()也具有相似的特征
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Close the database connection.');
});
- 一次完整的操作
// connect.js
const sqlite3 = require('sqlite3').verbose();
// open database in memory
let db = new sqlite3.Database(':memory:', (err) => {
if (err) {
return console.error(err.message);
}
console.log('Connected to the in-memory SQlite database.');
});
// close the database connection
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Close the database connection.');
});
连接到磁盘数据库
这个只需要把Database()函数中的第一个参数从’:memory:'改为db文件的路径即可。
let db = new sqlite3.Database('./db/disk.db', openmode, (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the diskdatabase.');
});
这里注意在打开磁盘数据库时,Database函数有额外的参数 openmode。
- sqlite3.OPEN_READONLY: 只读
- sqlite3.OPEN_READWRITE: 可读可写
- sqlite3.OPEN_CREATE: 当函数的第一个参数路径不存在时,则创建数据库文件
const sqlite3 = require('sqlite3').verbose();
// open the database
let db = new sqlite3.Database('./db/chinook.db', sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the chinook database.');
});
db.serialize(() => {
db.each(`SELECT PlaylistId as id,
Name as name
FROM playlists`, (err, row) => {
if (err) {
console.error(err.message);
}
console.log(row.id + "\t" + row.name);
});
});
db.close((err) => {
if (err) {
console.error(err.message);
}
console.log('Close the database connection.');
});
上面的例子完整地展示了一次打开、查询、关闭磁盘数据库的过程。
接下来将介绍如何进行查询。