https://github.com/mysqljs/mysql
安装依赖

  1. cnpm i mysql -S
  1. const mysql = require("mysql")
  2. const con = mysql.createConnection({
  3. host: '122.112.161.135',
  4. port: 10010,
  5. user: 'root',
  6. password: '123456',
  7. database: 'smart_city',
  8. dateStrings: true, //解决时间格式
  9. })
  10. con.connect(err => {
  11. if (err) {
  12. console.log("error connectiong:" + err.stack)
  13. }
  14. console.log('connected as id ' + con.threadId);
  15. })
  16. const sql_exec = (sql) => {
  17. return new Promise((resolve, reject) => {
  18. con.query(sql, (err, data) => {
  19. // con.release();
  20. if (err) reject(err)
  21. resolve(data);
  22. })
  23. })
  24. }
  25. module.exports = {
  26. sql_exec
  27. }

一、createConnection

createConnection创建mysql连接,每次执行一次connecton.query都是一个全新的连接,会造成资源的极大浪费,降低性能。

二、Pool连接池

连接池是另外一种执行方法,它一次性的创建了多个连接,然后根据客户端的查询,自动的分发,复用,管理这些连接。

  1. const mysql = require("mysql")
  2. const pool = mysql.createPool({
  3. host: '122.112.161.135',
  4. port: 10010,
  5. user: 'root',
  6. password: '123456',
  7. database: 'smart_city',
  8. dateStrings: true, //解决时间格式
  9. })
  10. const sql_exec = (sql,val) => {
  11. return new Promise((resolve, reject) => {
  12. pool.getConnection((err,con)=>{
  13. if(err){
  14. reject(err)
  15. console.log("数据库连接失败")
  16. }else{
  17. console.log("建立连接")
  18. con.query(sql,val,(err,result)=>{
  19. if(err){
  20. reject(err);
  21. }else{
  22. resolve(result);
  23. con.release();
  24. }
  25. })
  26. }
  27. })
  28. })
  29. }
  30. module.exports = {
  31. sql_exec
  32. }

三、使用

  1. var sql = `select * from gg_user where user_id = 10000 `
  2. var result = await sql_exec(sql);

  1. var sql = `select * from gg_user where user_id = ? `
  2. var result = await sql_exec(sql,[10000]);