三好先森|Node.js 学习笔记:使用数据库
这部分示例将示范SQLite3、mongodb这两种不同类型的数据库在 Node.js 中的使用方法 。 首先 , 我们要在code目录下执行mkdir 06_database命令来创建用于存放这一组示例的目录 。
1. SQLiteSQLite3是一个轻量级的关系型数据库 , 我们在这里用它来示范 Node.js 对关系型数据库的处理 。 首先 , 在code/06_database目录下执行mkdir sqlite命令 , 并执行以下步骤:
- 在code/06_database/sqlite目录下执行npm install sqlite3命令 , 将sqlite3安装到当前示例项目中 。
- 为控制程序按串行方式执行 , 需在code/06_database/sqlite目录下执行npm install async命令 , 将async包安装到当前示例项目中 。
- 在code/06_database/sqlite目录下执行touch Sqlite.js , 创建一个脚本文件 , 具体如下:
const fs = require('fs')const sqlite3 = require('sqlite3').verbose()class SqliteDB {constructor(file) {this.db = new sqlite3.Database(file)const db_exist = fs.existsSync(file)if ( !db_exist ) {console.error('数据库文件创建成功!')fs.openSync(file, 'w')}}createTable(sql) {this.db.serialize(function() {this.run(sql, function(err) {if( err !== null ) {return console.error('错误信息:' + err.message)}})})}insertData(sql, objects) {this.db.serialize(function() {const stmt = this.prepare(sql)for ( let i = 0; i < objects.length; ++i ) {stmt.run(objects[i])}stmt.finalize()})}queryData(sql, callback, message) {this.db.all(sql, function(err, rows) {if( err !== null ) {return console.error('错误信息:' + err.message)}if( callback ) {callback(rows, message)}})}executeSql(sql) {this.db.run(sql, function(err) {if( err !== null ) {return console.error('错误信息:' + err.message)}})}close() {this.db.close()}}module.exports = SqliteDB4、在code/06_database/sqlite目录下执行touch useSqlite.js , 创建一个脚本文件 , 具体如下:const async = require('async')const SqliteDB = require('./Sqlite')const file = "HRDB.db"const sqliteDB = new SqliteDB(file)function dataDeal(objects, message) {console.log(message)for ( const i = 0; i < objects.length; ++i ) {console.log(objects[i])}}async.waterfall([function (callback) {// 创建表格const createTableSql = `create table if not exists HR_TABLE (name TEXT,age TEXT,sex TEXT,items TEXT);`sqliteDB.createTable(createTableSql)callback()},function (callback) {// 插入数据const insertTileSql = `insert into HR_TABLE(name, age, sex, items)values(?, ?, ?, ?)`const arr = [['凌杰', '24', '男', '看书, 看电影, 旅游'],['蔓儿', '25', '女', '看书, 看电影, 写作'],['张语', '32', '女', '看书, 旅游, 绘画']]sqliteDB.insertData(insertTileSql, arr)callback()},function (callback) {// 查询数据const querySql = 'select * from HR_TABLE'sqliteDB.queryData(querySql, dataDeal, '初始数据')callback()},function (callback) {// 更新数据const updateSql = `update HR_TABLE set age = 37 where name = "凌杰"`sqliteDB.executeSql(updateSql)callback()},function (callback) {// 查询更新后的数据querySql = `select * from HR_TABLE`sqliteDB.queryData(querySql, dataDeal, '更新后数据')callback()},function (callback) {sqliteDB.close()callback()}])5、保存所有文件后 , 在code/06_database/sqlite目录下执行node useSqlite.js命令 , 结果如下:
推荐阅读
- 三好先森|技术与人类的关系到底是什么?
- 阿狸先森|现今如何了?,被联想198亿元收购的巨头摩托罗拉
- 三好先森|「精选」20个黑科技软件下载网站,让你再无找不到的软件
- 阿狸先森|被联想198亿元收购的巨头摩托罗拉,现今如何了?
- 小胖先森|或是华米第一款联名手表?,华米预热新品
- 小胖先森|Hero 9 Black运动相机曝光,GoPro
- 三好先森|基于JeecgBoot快速开发简历库系统,开源项目,实操分享
- 三好先森|「智能家居」小米碰碰贴2使用体验,米家有了新的玩法
- 三好先森|腾讯也扶不起的“阿斗”,十年败光1亿用户,刚刚正式叫停了
- 阿狸先森|是时候跟百度网盘的龟速下载说拜拜了
