1, 需要安装 MySQL 依赖 =>  npm i mysql -D

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);
}
});
});
};

3: 简单的使用 

// 引入工具类
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);
});
}; // 调用方法
ceshi();

4: 带事务的使用

// 引入工具类
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();
}
});
});
}; // 调用测试方法
ceshi();

注意:移动端前端开发调试 http://yujiangshui.com/multidevice-frontend-debug/

 文本大多为摘录或总结,如影响到原创利益问题,请联系我删除!

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 2, 写一个核心工具类, 用于获取线程池连接 mysql-util.js // 引入 mysql 数据库连接依赖 const mys ...

  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. nginx开启HSTS让浏览器强制跳转HTTPS访问

    在上一篇文章中我们已经实现了本地node服务使用https访问了,看上一篇文章 效果可以看如下: 但是如果我们现在使用http来访问的话,访问不了.如下图所示: 因此我现在首先要做的是使用nginx配 ...

  2. 一步一步配置Spring

    https://blog.csdn.net/tangtong1/article/details/51442757

  3. LR C语言语句复习,几个简单代码

    嵌套循环 Action() { int i,j; ;i<=;i++) { ) beark; else lr_output_message("i=%d",i); ;j<= ...

  4. 30分钟学会React Hook, Memo, Lazy

    我们来学习React 16.8里的新特性. 1. 自行配置好React的环境,推荐你使用Create React APP, 你也可以下载本文档Zip解压到本地直接运行. https://github. ...

  5. Teradata 认证系列 - 3. 关系型数据库的概念

    本课的学习目标 定义关系型数据库关联的术语 讨论主键的功能 讨论外键的功能 列出关系型数据库的优势 描述星型架构和第三范式数据模型的区别 什么是数据库?数据库是一个应用永久保存数据的集合表现在: 逻辑 ...

  6. weex 项目开发 weexpack 项目 打包、签名、发布

    一. weexpack build android  和  weexpack run android 的 区别. (1)单纯打包 weexpack build android (2)打包并运行 wee ...

  7. Java集合框架—List

    Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. |- ...

  8. 【Oracle】曾经的Oracle学习笔记(8-15)ER图,三大范式,数据库字典,视图,索引,序列

    一.数据库建模 二.建表 三.数据库字典 四.DML语句 五.视图 六.索引 七.序列 八.DDL语句 Lesson 8 Overview of Data Modeling and Database ...

  9. es6 随笔

    记录一些学习es6中学习的新特性,挺有用,作为日后复习es6用,便于记忆. 1.变量定义let和const es6用let.const代替,let是定义块级作用域中的变量,const声明之后必须赋值, ...

  10. MySQL访问

    MySQL访问 1.介绍 python访问mysql数据库,需要安装mysql的python插件. 2.安装插件 通过pip命令安装mysql插件. # cmd>pip install PyMy ...