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()

  

  

node 连接MySQL及其分装, 连接池连接的更多相关文章

  1. mysql之 远程连接 mysql 很慢,本地连接 mysql 很快 (skip-name-resolve)

    症状:,远程连接 mysql 很慢,但是 本地连接 mysql 很快, ping 和 route 网络通信都是正常的. 解决:mysql 的配置文件中增加如下配置参数:[mysqld]skip-nam ...

  2. java web中jsp连接mysql数据库 以及数据库连接池的使用

    将mysql-connector-java-5.1.6-bin.jar导入到tomcat的lib目录下. 在java项目中,只需要引入mysql-connector-java-5.1.6-bin.ja ...

  3. delphi连接mysql (通过libmysql.dll连接)

    首先在窗体上拖拽sqlconnection和sqlquery两个控件: 然后在测试连接中,写入以下代码(注意exe生成目录下需要有dbxopenmysql50.dll和libmysql.dll) SQ ...

  4. spring boot配置druid连接池连接mysql

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. nodejs连接mysql并进行简单的增删查改

    最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...

  6. spring boot 连接Mysql介绍

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  7. paip.python连接mysql最佳实践o4

    paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...

  8. Vusual C++连接Mysql和从MySql中取出数据的API介绍

    .1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...

  9. mysql数据库在Navicat Premium连接的时候出现1862错误

    navicat连接打开时报1862的错误, 很就没有连接mysql看看了,今天连接的时候发现本机的mysql链接不上了,在cmd中执行动作的时候也会叫你去set password,做设置密码的动作时会 ...

随机推荐

  1. 00.不规则json序列化使用eval、demjson

    有下面一段字符串 import json str0 = '[{"name":"白云大道营业厅","siteaddr":"x...& ...

  2. vue 微信授权解决方案

    背景 前后端分离项目 - SpringSocial 绑定与解绑社交账号如微信.QQ2018-08-14更新时隔四个月第一次更新,因为项目重构有一次接触到了微信授权,思路已经比原来清晰的多了,将重新修改 ...

  3. Keil-MDK编译完成后代码大小

    Code 代表执行的代码,程序中所有的函数都位于此处. RO-data 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处. RW-data 代表已初始化的读写数据,程序中定义并且初始化的全局 ...

  4. Huawei-R&S-网络工程师实验笔记20190527-华为设备密码重置、设置web管理

    >Huawei-R&S-网络工程师实验笔记20190527-华为设备密码重置.设置web管理 >>实验开始(使用SecureCRT 等工具软件): 一.华为设备密码重置,通过 ...

  5. PHP包管理工具composer简单总结

    前言 接触laravel之后,才知道有PSR,composer之类的东西,PHP已经不再是一门草根语言了.最近在尝试玩thrift,需要安装PHP thrift依赖库,使用composer insta ...

  6. 使用javacv注意点

    由于Android开发需要,使用JavaCV,一开始我配置windows上的Javacv,发现总是出问题,说找不到dll文件.最终发现Opencv库必须解压在C盘根目录下才行. 这个有点坑爹,另外要注 ...

  7. AngularJS:实现页面滚动到底自动加载数据的功能

    要实现这个功能,可以通过https://github.com/sroze/ngInfiniteScroll这个第三方控件来实现.步骤如下: 1. 下载ng-infinite-scroll.js程序ht ...

  8. HDU 4519

    实现简单,但不得不说是一道好题. 当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了. 当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到 ...

  9. css3 动态背景

    动态背景 利用多层背景的交替淡入淡出,实现一种背景在不停变换的效果,先看图. 效果图: DEMO地址 步骤 1.利用css的radial-gradient创建一个镜像渐变的背景.当中的80% 20%为 ...

  10. Wikioi 1081 线段树成段更新单点查询

    线段树练习飘逸的写法,自从自己改成这样的写法之后,线段树就没再练过,如今最终练得上了. 由于这里查询仅仅是查询了叶子结点,所以pushUp函数就用不上了,只是我没去掉之前是3ms.去掉之后反而变成4m ...