不基于服务器方式嵌入到本地运行的文件型数据库,本文选择**SQlite **用于嵌入开发。
进入官网下载对应文件包
解压安装在本地,sqlite3.def和dll,exe放置在通一文件夹内
设置系统环境变量path中加入sqlite3.exe启动地址
在本文件夹内导航栏执行CMD命令 ,键入sqite3
那么恭喜你sqite3
数据库安装完成
"sqlite3": "^5.0.0",
在cmd命令行对应文件目录执行
npm init -y
我用npm没有安装成功改用淘宝镜像
cnpm install sqlite3 --save
安装命令
新建一个表
用可视化工具链接本地数据库,如图所示构建数据库名称+表+字段
**const sqlite3 = require("sqlite3").verbose()
// sqlites数据库地址
let sqliteDbPath = "user.db"
// 打开sqlites数据库
var db = new sqlite3.Database(sqliteDbPath)
// all查询所有数据
console.time('time a');
db.all(`select * from user`, function(err, row) {
if (err) throw err
else {
console.log(' ①all查询结果 ', row)
console.log('转换JSON',JSON.stringify(row));//all所有的内容转成 JSON内容
}
})
console.timeEnd('time a');
// each逐条查询数据,每一段会单独打印
db.each("select * from user", function(err, row) {
if (err) throw err
else {
console.log(' ②each查询结果:', row)
}
})
// 按条件查询
db.each("select * from user where username=?", 'miao', function(err, row) {
//user 表头 username 数据库字段
if (err) throw err
else {
console.log(' ③按条件查询 ', row)
}
})
// // // 增加一条数据
// var sql_add = db.prepare(`insert into user (username, password, email) values('buding', '1111', '[email protected]')`)
// sql_add.run()
// console.log(sql_add)
// // 删除数据
// var sql_del = db.prepare(`delete from user where username='buding'`)
// sql_del.run()
// // 修改一条数据
// var sql_modify = db.prepare(`update user set username='buding' where id=1`)
// sql_modify.run()**
PS E:\myapp\sqlite> node test04.js
time a: 1.744ms
①all查询结果 [
{
id: 2,
username: 'zhangshan',
password: '123456',
email: '[email protected]'
},
{
id: 1,
username: 'miao',
password: '123456',
email: '[email protected]'
}
]
转换JSON [{
"id":2,"username":"zhangshan","password":"123456","email":"[email protected]"},{
"id":1,"username":"miao","password":"123456","email":"[email protected]"}]
②each查询结果: {
id: 2,
username: 'zhangshan',
password: '123456',
email: '[email protected]'
}
②each查询结果: {
id: 1,
username: 'miao',
password: '123456',
email: '[email protected]'
}
③按条件查询 {
id: 1,
username: 'miao',
password: '123456',
email: '[email protected]'
}
2条数据查询时间小于2ms,没有大规模测试,本文基于固态硬盘测试的结果。
在nodejs的模块安装模块下,进入sqlite3/lib目录下,打开sqlite3.js文件查看,操作数据库主要是用Database,Database相关的函数有:run、prepare、each、get、all、exec、map和close。
Database
用法:new sqlite3.Database(filename,[mode],[callback])。
功能:返回数据库对象并且自动打开和连接数据库,它没有独立打开数据库的方法。
close
用法:close([callback])。
功能:关闭和释放数据库对象。
run
用法:run(sql,param,…],[callback])。
功能:运行指定参数的SQL语句,完成之后调用回调函数,它不返回任何数据,在回调函数里面有一个参数,SQL语句执行成功,则参数的值为null,反之为一个错误的对象,它返回的是数据库的操作对象。在这个回调函数里面当中的this,里面包含有lastId(插入的ID)和change(操作影响的行数,如果执行SQL语句失败,则change的值永远为0)。
get
用法:get(sql,[param,…],[callback])。
功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为结果集中的第一行数据,反之则回调函数中只有一个参数,只参数为一个错误的对象。
all
用法:all(sql,[param,…],[callback])。
功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为查询的结果集,反之,则只有一个参数,且参数的值为一个错误的对象。
prepare
用法:prepare(sql,[param,…],[callback])。
功能:预执行绑定指定参数的SQL语句,返回一个Statement对象,如果执行成功,则回调函数的第一个参数为null,反之为一个错误的对象。