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. Java中GUI

    目录 1.Java GUI 概述 2.容器 2.1 窗口 2.2 弹窗和对话框 对话框 自定义弹窗 2.3 面板 普通面板 滚动面板 分隔面板 选项卡面板 3.布局 3.1.流式布局 3.2.网格布局 ...

  2. react 数据请求分层

    封装一个接口请求类 数据模型 请求uri配置设置 数据统一存储于redux中,在本项目中创建一个store目录,此目录中就是redux仓库源 定义仓库入口 reducer methods方法 acti ...

  3. [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。

    前言 最近在开发有关高分辨率屏幕的软件,还是做了不少尝试的,当然我们也去网上查了不少资料,但是网上的资料也很零碎,说不明白,这样的话我就做个简单的总结,希望看到这的你可以一次解决你有关不同分辨率下的所 ...

  4. 三星PM871B SATA SSD 固态硬盘评测

    三星PM871B SATA SSD 固态硬盘评测 视频测试: 外观: CDI信息: 跑分 : 260G复制测试: 听说是850EVO的OEM版本.

  5. raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID

    背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install ...

  6. 如何判断APP页面是原生还是H5

    如何判断APP页面是原生还是H5 1.打开设置,搜索"开发者选项",点击"开发者选项" 华为手机进入开发者模式方法 1.打开华为手机的[设置],找到并点击进入[ ...

  7. 认真学习CSS3-问题收集-101号-莫名其妙的row行高

    其他人都有事情,有些事情只好自己上阵,自己做,最踏实! 做了两个基本一样的页面,都是采用bootsrap+jquey+js的技术,业务内容就是简单的查询,加上一些简单的效果,没有啥特别的内容. 由于历 ...

  8. WPS中导入endnote插件

    WPS中导入endnote插件 1. 找到 Endnote 插件的目录: D:\Program Files (x86)\EndNote 20\Product-Support\CWYW   2. 把Cw ...

  9. 海思SDK 学习 :001-HI_SDK 的 安装

    背景 保密.不管怎么样接触到了海思SDK的开发,作为一项比较常见的技术,我们开展有关地学习. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 概况 ...

  10. 3568F-Linux-RT系统测试手册