【NodeJS】操作MySQL

 

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, '[email protected]'); INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (2, 'Jack', 20, '[email protected]'); INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (3, 'Tom', 28, '[email protected]'); INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (4, 'Sandy', 21, '[email protected]'); INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (5, 'Billie', 24, '[email protected]'); 

 

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: '[email protected]' } // 占位符传参 , 操作的结果通过结果集对象的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: '[email protected]' }  // 同理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()