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