1, 下载 mysql 依赖 => npm -i mysql

2, 写一个核心工具类, 用于获取线程池连接 mysql-util.js

// 引入 mysql 数据库连接依赖
const mysql = require("mysql"); // 创建 mysql 连接池并配置参数
const pool = mysql.createPool({
host: "192.168.200.100", // 主机地址
port: 3306, // 端口
user: "root", // 数据库访问账号
password: "920619", // 数据库访问密码
database: "test", // 要访问的数据库
charset: "UTF8_GENERAL_CI", // 字符编码 ( 必须大写 )
typeCast: true, // 是否把结果值转换为原生的 javascript 类型
supportBigNumbers: true, // 处理大数字 (bigint, decimal), 需要开启 ( 结合 bigNumberStrings 使用 )
bigNumberStrings: true, // 大数字 (bigint, decimal) 值转换为javascript字符对象串
multipleStatements: false, // 允许每个mysql语句有多条查询, 未防止sql注入不开启
//connectTimeout: 5000, // 数据库连接超时时间, 默认无超时
});
pool.connectionLimit = 10; // 连接池中可以存放的最大连接数量
pool.waitForConnections = true; // 连接使用量超负荷是否等待, false 会报错
pool.queueLimit = 0; // 每个连接可操作的 列数 上限, 0 为没有上限 // 对外暴漏从连接池中获取数据库连接的方法
module.exports = function () {
return new Promise((resolve, reject) => {
pool.getConnection((err, conn) => {
if (err) {
console.log("数据库连接获取失败");
} else {
resolve(conn);
}
});
});
};

2, 执行简单的操作测试

// 引入工具类
let mysqlUtil = require("./mysql-util"); // 声明一个同步方法, 这里要求有 SQL 语句的基础
let ceshi = async function () {
// 获取连接, es6 新特性 awit 不能少
let conn = await mysqlUtil();
// 准备一个防 SQL 注入的 SQL 语句, 并准备参数
let sqlStr = "INSERT INTO user (UserName, UserSex) value (?, ?)";
let sqlParam = ["姓名", 1];
// 执行 SQL 语句并返回结果
conn.query(sqlStr, sqlParam, function (err, ret) {
console.log(ret);
     conn.release(); 
});
}; // 调用方法
ceshi();

3, 执行带事务的操作测试

// 引入工具类
let mysqlUtil = require("./mysql-util"); // 声明一个同步方法, 这里要求有 SQL 语句的基础
// 在 beginTransaction 和 commit 之间可以执行多次 query 方法
let ceshi = async function () {
// 获取连接
let conn = await mysqlUtil();
// 开启事物
await new Promise((resolve, reject) => {
conn.beginTransaction(err => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
// 执行第一个 SQL 语句
let result1 = await new Promise((resolve, reject) => {
let sqlStr = "INSERT INTO user (UserName, UserSex) values (?, ?)";
let sqlParam = ["姓名2", 0];
conn.query(sqlStr, sqlParam, function (err, ret) {
if (err) {
// 回滚之前的数据库操作, 直至碰到 beginTransaction
return conn.rollback(() => {
resolve(err);
});
}
resolve(ret);
});
});
console.log(result1);
// 执行第二个 SQL 语句
let result2 = await new Promise((resolve, reject) => {
let sqlStr = "SELECT * FROM user";
//let sqlStr = "SELEC * FROM user"; // 错误的 SQL 语句
conn.query(sqlStr, function (err, ret) {
if (err) {
// 回滚之前的数据库操作, 直至碰到 beginTransaction
return conn.rollback(() => {
resolve(err);
});
}
resolve(ret);
});
});
console.log(result2);
// 关闭事务
await new Promise((resolve, reject) => {
conn.commit(err => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
   conn.release();  
}; // 调用测试方法
ceshi();

Node 操作 MySQL 数据库的更多相关文章

  1. 你不会用node 操作mysql数据库吗?

    http://static.runoob.com/download/websites.sql这是实例 websites.sql文件1.安装node的mysql服务 npm install mysql ...

  2. Node 操作MySql数据库

    1, 需要安装 MySQL 依赖 =>  npm i mysql -D 2, 封装一个工具类 mysql-util.js // 引入 mysql 数据库连接依赖 const mysql = re ...

  3. node操作mysql数据库

    1.建立数据库连接:createConnection(Object)方法       该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database.与php ...

  4. 使用node js 操作 Mysql 数据库

    使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...

  5. node使用MySQL数据库

    内容: 1.node连接数据库 2.数据库常用操作 3.数据库实例 - 用户注册.登陆 1.node连接数据库 (1)下载mysql模块 (2)使用mysql模块连接数据库 let db=mysql. ...

  6. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  7. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  8. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  9. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

随机推荐

  1. 学习笔记之Python for Data Analysis

    Python for Data Analysis, 2nd Edition https://www.safaribooksonline.com/library/view/python-for-data ...

  2. 用IntelliJ的IDEA来创建SpringBoot框架

    要安装ULTIMATE版本,并导入key http://idea.iteblog.com/key.php 安装完成后 1:首先打开New Project 2:选择Spring Initializr 这 ...

  3. [UE4]蓝图:重写父类时调用父类方法

    右键重写的方法选择“Add call to parent function” 一定要善用这个功能,实现原有父类功能的同时实现子类特别的功能.

  4. [UE4]暂停游戏、退出游戏、游戏输入模式

    游戏主界面WB_Main蓝图 Set Game Paused:暂停游戏 Show Mouse Cursor:显示鼠标 Set Input Mode:设置游戏输入模式(游戏和UI).仅仅游戏.仅仅UI( ...

  5. AndroidStudio2.2.2 打开ddms快捷键

    按两下shift键,后在弹出的对话框中输入Android Device,在出现的选项中单击即可,如图.

  6. linux 安装软件各种错误集锦及解决方法

    1.最小化安装了centos, 但是使用ifconfig命令时候出现”bash ifconfig command not found” .解决方法:yum -y install net-tools.x ...

  7. Linux使用NFS服务实现远程共享

    首先安装 apt install -y nfs-kernel-server nfs-common 编辑配置文件 vim /etc/exports 添加内容: /root/test *(rw,sync, ...

  8. for 练习

    一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 var height = 0.00001; for (var i = 1; true; i++) { height *= ...

  9. window安装mysql教程

    1.下载mysql安装包到指定文件: 比如如图我把下载的mysql zip的内容解压到这个文件里面,具体文件内容如下: my.ini 需要自己创建,里面的内容如下: [mysqld] #basedir ...

  10. websocket 群聊,单聊,加密,解密

    群聊 from flask import Flask, request, render_templatefrom geventwebsocket.handler import WebSocketHan ...