1、在连接的数据库中准备测试操作的表:

CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '姓名',
`age` int DEFAULT NULL COMMENT '年龄',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (1, 'Jone', 18, 'test1@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (2, 'Jack', 20, 'test2@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (3, 'Tom', 28, 'test3@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (4, 'Sandy', 21, 'test4@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (5, 'Billie', 24, 'test5@baomidou.com');

2、开发的JS文件所在目录安装MySQL模块

npm install mysql

3、编写JS文件,引入模块并创建连接池

// mysql模块导入
const MYSQL = require('mysql') // 创建连接池,入参连接配置参数
const db = MYSQL.createPool({
host: '127.0.0.1',
port: 3308,
user: 'root',
password: '123456',
database: 'test',
})

  

4、查询操作

// 查询操作
const SQL_STATEMENT = 'SELECT * FROM user;'
db.query(SQL_STATEMENT, (error, resultset) => {
// SQL执行异常或者连接异常,将返回error异常对象
if (error) return console.log(JSON.stringify(error))
 // 如果SQL执行正常将返回结果集对象 [row1, row2, row3, ...]
console.log(resultset)
})

5、新增操作

// 新增操作: 默认是开启了自动提交的
const user = {
name: 'cloud9',
age: 22,
email: '1791255334@qq.com'
}
// 占位符传参 , 操作的结果通过结果集对象的affectedRows属性来返回
const SQL = 'INSERT INTO `test`.`user` VALUES(NULL, ?, ?, ?);'
db.query(SQL, [user.name, user.age, user.email], (error, results) => {
if (error) return console.log(error)
console.log(results.affectedRows + ' 插入操作')
}) // 支持按对象方式直接插入
const SQL = 'INSERT INTO `test`.`user` SET ?'
db.query(SQL, user, (error, results) => {
if (error) return console.log(error)
console.log(results.affectedRows + ' 插入操作')
})

  

6、更新操作,和新增基本是一致的

const user = {
name: 'cloud9',
age: 22,
email: '1791255334@qq.com'
} // 同理UPDATE语句也可以
const UPDATE_SQL = 'UPDATE `test`.`user` SET name = ?, age = ? WHERE id = 1 '
db.query(UPDATE_SQL, [user.name, user.age], (error, results) => {
if (error) return console.log(error)
console.log(results.affectedRows + ' 插入操作')
}) // 对象支持
const UPDATE_SQL = 'UPDATE `test`.`user` SET ? '
db.query(UPDATE_SQL, user, (error, results) => {
if (error) return console.log(error)
console.log(results.affectedRows + ' 插入操作')
}

  

7、新增,更新,删除,基本同理,不多赘述

8、连接池资源释放:

// 关闭连接池资源
db.end()

 

使用ES8的 Async Await语法:

/**
* 安装mysql2模块
* npm install mysql2
*/
import mysql from 'mysql2' // 连接配置
const connectorConfig = {
host: '127.0.0.1',
port: 3308,
user: 'root',
password: '123456',
database: 'my-info'
} // promise包装处理?
const connectPool = mysql.createPool(connectorConfig).promise() /**
* 使用ES8 Async & Await
*/
async function pageQuery(pageIndex, pageSize) { const QUERY_SQL = 'SELECT * FROM `english-words` LIMIT ?, ?' /**
* JS数组也能解构,直接声明一个任意变量名称,
* 获取数组第一个元素返回给此变量,
* 以此类推
*/
const [resultSet, columnDefines] = await connectPool.query(QUERY_SQL, [ parseInt( (1 - pageIndex) * pageSize), pageSize])
console.log(resultSet)
// console.log(columnDefines) // 不能放在外面释放,因为是一个异步任务
connectPool.end()
} // 调用
pageQuery(1, 5)

  

  

【NodeJS】操作MySQL的更多相关文章

  1. Nodejs操作MySQL数据库

    https://github.com/mysqljs/mysql   如何用nodejs操作MySql数据呢,其实写法还是简单的, 1.开始在你的node项目中 npm install mysql - ...

  2. nodejs 操作mysql

    这篇文章主要介绍了nodejs中操作mysql数据库示例,本文演示了如何在NodeJS中创建创建mysql连接.mysql数据库.插入数据.查询数据等功能,需要的朋友可以参考下  引言: 继前面的No ...

  3. nodeJs 操作Mysql数据库

    nodeJs下操作数据库需要安装npm模块: mysql npm install mysql --save-dev 新建express项目 express --view=ejs 在项目根目录下新建数据 ...

  4. nodejs操作mysql

    var mysql = require('mysql');var pool = mysql.createPool({ host: 'localhost', user: 'root', password ...

  5. Nodejs操作MySQL - 增删改查

    先安装npm模块项目 npm init 安装mysql npm install mysql --save Nodejs 连接msyql // 导入mysql const mysql = require ...

  6. nodejs操作mysql常见错误

    1.Cannot enqueue Handshake after already enqueuing a Hand shake.这个错误提示意思是某个数据库连接已经执行了,不能进行多次连接了.遇到此类 ...

  7. nodejs 操作 mysql

    1.安装插件 npm install mysql 2.调用代码 var mysql = require('mysql') var connection = mysql.createConnection ...

  8. nodejs操作MySQL,mysql连接池及事务的使用

    https://blog.csdn.net/jasnet_u/article/details/88605168

  9. nodejs 连接 mysql 查询事务处理

    自己用 mysql 很多次的,然后又是主玩nodejs的.专门写一篇文章来说说nodejs连接mysql数据库.在使用之前,请检查计算机是否具有一下环境! nodejs 执行环境. mysql数据库环 ...

  10. Nodejs连接mysql的增、删、改、查操作

    一,创建数据库 Source Database : my_news_test SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ...

随机推荐

  1. uniapp 拨打电话功能

    phoneNumber进行动态调用时候一定要添加引号,否则会报错 1 call() { 2 uni.makePhoneCall({ 3 phoneNumber: 'this.leads.tel' // ...

  2. js 判断手机号格式

    大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国神游,多 ...

  3. Linux设备驱动--阻塞与非阻塞I/O

    注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...

  4. c#WinFrom自定义图表仪表控件-频谱

    这是为客户定制的一个频谱图表控件,先看下成品效果,gif较大,略等片刻 开发步骤分析: 1.界面有多个间距不等的线分割的区域,每个区域的值范围不同,我们就需要把每个区域定义出来,方便我们操作的时候来计 ...

  5. docker-20.10.24搭建ferry工单系统

    安装文档 https://www.fdevops.com/docs/ferry-tutorial-document/introduction 必须要有docker环境,19.03以上的 本文档需用户自 ...

  6. SonarQube代码质量扫描工具

    1.什么是SonarQube 既然是学习devops 运维流水线构建 开发 ↓ 测试 ↓ 运维 华为devops软件开发流水线文档 https://support.huaweicloud.com/re ...

  7. Vue学习:14.工程化开发&脚手架

    0基础如何进入IT行业? 简介:对于没有任何相关背景知识的人来说,如何才能成功进入IT行业?是否有一些特定的方法或技巧可以帮助他们实现这一目标? 方向一:学习路径 1.明确兴趣和目标:首先确定你对IT ...

  8. 《Vue3.x +TpyeScript实践指南》勘误

    图书出版已有一段时间,书中已发现错误如下: 书的第14页,倒数第3行,npm init -y命令中,init和-y之间应该有个空格: 书的第32页,代码的第1行,应该为模板字符串符号 `,我看印刷的是 ...

  9. OSI七层网络模型和TCP/IP四层模型

    OSI七层网络模型 OSI: 开放系统互连参考模型是ISO制定的一个用于计算机或通信系统间互联的标准体系 OSI七层模型功能: 物理层: 七层模型的最底层,主要是物理介质传输媒介(网线或者无线),在不 ...

  10. Android 中的 perfboot工具

    背景 开机首先加载bootloader,由bootloader启动kernel,然后运行init程序,有init启动Zygote,Zygote进程启动SystemServ进程,在SystemServe ...