1, 须要安装 MySQL 依赖 => npm i mysql -Djavascript
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: 简单的使用 java
// 引入工具类 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: 带事务的使用mysql
// 引入工具类 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/es6
文本大多为摘录或总结,如影响到原创利益问题,请联系我删除!sql