zoukankan      html  css  js  c++  java
  • node 连接MySQL及其分装, 连接池连接

    const mysql = require('mysql')
    
    const config = require('./../../config/config.default')
    
    var connection = mysql.createConnection({
      host: config.database.HOST,
      user: config.database.USERNAME,
      password: config.database.PASSWORD,
      database: config.database.DATABASE
    })
    
    connection.connect(function(err) {
      if (err) {
        console.error('error connecting: ' + err.stack)
        return
      }
      console.log('Database connection successful, connected as id ' + connection.threadId)
    })
    
    //查询
    // connection.query(`select * from area`, function(err, results, fields) {
    //   if (err) throw err
    //   console.log(results[0])
    //   console.log(fields[0])
    // })
    
    
    
    //关闭连接
    // connection.end(function(err) {
    //   if (err) {
    //     console.error('数据库关闭失败' + err)
    //   }
    //   console.log('数据库关闭')
    // })
    
    module.exports = connection
    // 分装
    
    const mysql = require('mysql')
    
    const config = require('./../../config/config.default')
    
    module.exports = {
      query: function(sql, params, callback) {
        var connection = mysql.createConnection({
          host: config.database.HOST,
          user: config.database.USERNAME,
          password: config.database.PASSWORD,
          database: config.database.DATABASE
        })
        connection.connect(function(err) {
          if (err) {
            console.error('error connecting: ' + err.stack)
            throw err
          }
          console.log('Database connection successful, connected as id ' + connection.threadId)
          connection.query(sql, params, function(err, results, fields) {
            if (err) throw err
            callback && callback(results, fields)
            connection.end(function(err) {
              if (err) {
                console.error('数据库关闭失败' + err)
                throw err 
              }
              console.log('数据库关闭')
            })
          })    
        })
      },
      // 连接池连接
      queryPool: function(sql, params, callback) {
        var pool = mysql.createPool({
          host: config.database.HOST,
          user: config.database.USERNAME,
          password: config.database.PASSWORD,
          database: config.database.DATABASE
        })
        pool.getConnection(function(err, connection) {
          // 使用连接
          connection.query(sql, params, function(err, results, fields) {
            if (err) throw err
            callback && callback(results, fields)
            connection.release()     
            console.info('连接完成,不再使用,返回到连接池')
          })
        })
      }
    }
    
    
    // 调用
    const db = require('./index')
    
    
    db.query(`select * from area`, [], function(result, fields) {
      console.log('查询结果:')
      console.log(result[0].name)
    })
    
    db.queryPool(`select * from area`, [], function(result, fields) {
      console.log('查询结果:')
      console.log(result[0])
    })
    

      

    const db = require('../db')
    const query = db.queryPoolPromise
    
    /**
     * @author afacode
     * SQL 操作
     * @date 2018.08.15
     */
    let findAllUser = (value, col = '*') => {
      let _sql = `select ${col} from user_login where user_id = ?;`
      return query(_sql, value)
    }
    // 测试
    async function user() {
      let user = await findAllUser([22], ['username', 'password'])
      
    console.log(user)
    }
    
    user()
    

      

      

  • 相关阅读:
    http://www.jdon.com/jivejdon/thread/37340
    我的英语死在类似的问题上
    Linux之read命令使用
    SIP注册呼叫流程简介
    sh里的变量 $0 $1 $$ $#
    LTE 逻辑分层和接口协议
    LTE语音业务VOLTE
    shell编程——if语句 if z n f eq ne lt
    高通QXDM抓modem log
    LTE与VOLTE基础知识
  • 原文地址:https://www.cnblogs.com/lfqcode/p/9473861.html
Copyright © 2011-2022 走看看