Node 操作 MySQL 数据库
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 数据库的更多相关文章
- 你不会用node 操作mysql数据库吗?
http://static.runoob.com/download/websites.sql这是实例 websites.sql文件1.安装node的mysql服务 npm install mysql ...
- Node 操作MySql数据库
1, 需要安装 MySQL 依赖 => npm i mysql -D 2, 封装一个工具类 mysql-util.js // 引入 mysql 数据库连接依赖 const mysql = re ...
- node操作mysql数据库
1.建立数据库连接:createConnection(Object)方法 该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database.与php ...
- 使用node js 操作 Mysql 数据库
使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...
- node使用MySQL数据库
内容: 1.node连接数据库 2.数据库常用操作 3.数据库实例 - 用户注册.登陆 1.node连接数据库 (1)下载mysql模块 (2)使用mysql模块连接数据库 let db=mysql. ...
- PHP操作MySQL数据库5个步骤
PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- 转 用C API 操作MySQL数据库
用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...
- PHP操作mysql数据库:[2]查询数据听语音
本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料 Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言 ...
随机推荐
- Jenkins的详细安装
操作环境:Windows 一.环境准备 1 安装JDK 本文采用jdk-8u111-windows-x64.exe: 2 配置tomcat 本文采用tomcat8,无需安装,配置JAVA_HOME及J ...
- 1123.(重、错)Is It a Complete AVL Tree
题意:给定结点个数n和插入序列,判断构造的AVL树是否是完全二叉树? 思路:AVL树的建立很简单.而如何判断是不是完全二叉树呢?通过层序遍历进行判断:当一个结点的孩子结点为空时,则此后就不能有新的结点 ...
- Kong网关介绍与安装小记
本文主要为kong安装小记,系统环境为centos 6.7 本文转载请注明出处 —— xiaoEight 介绍 Kong 是在客户端和(微 ...
- python urlib2报错gaierror: [Errno 11004] getaddrinfo failed
gaierror : get address info error,获取网络地址信息错误. url不正确,代理信息配置不正确都会报这个错误. 摘自https://blog.csdn.net/qq_19 ...
- [UE4]虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)(转载)
最终效果 由于隐私保护,不想截实际的效果图,下面给出了示意图,左边是背包A,右边是背包B,将其中的子项目从左侧拖往右侧的背包,然后在插入位置放置. 第一步: 制作一个user widget(在内容浏览 ...
- MySQL 之数据库增量数据恢复案例
MySQL 数据库增量数据恢复案例 一.场景概述 MySQL数据库每日零点自动全备 某天上午10点,小明莫名其妙地drop了一个数据库 我们需要通过全备的数据文件,以及增量的binlog文件进行数据恢 ...
- CRM 报表中 Filtered 无数据
数据源设置为以下才可以使用 Filtered+实体名称和 fn_FindBusinessGuid 和 fn_FindUserGuid
- 通过mysqlclient操作MySQL数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- Mysql 64位解压版的安装
先下载解压版的mysql 下载地址 https://dev.mysql.com/downloads/file/?id=474496 解压 进到里面新建这个文件夹和文件 打开my.ini文件(用文本编辑 ...
- main.js_vue
下载依赖包:cnpm install 或者cnpm i 启动项目:npm run dev vue如何加载main.js 如果你是用vue.js官网提供的脚手架工具并沿用默认配置的话,你执行npm ru ...