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. 6.range filter进行范围过虑

    主要知识点 掌握range filter的用法     range filter就是查找一个范围内的数据,相当于sql中的betwen语法,以下是几个示例:     1.为帖子数据增加浏览量的字段   ...

  2. Git下的标签

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照 ...

  3. tensorflow的数据输入

    tensorflow有两种数据输入方法,比较简单的一种是使用feed_dict,这种方法在画graph的时候使用placeholder来站位,在真正run的时候通过feed字典把真实的输入传进去.比较 ...

  4. 【IntelliJ IDEA】idea上安装Translation插件后,需要AppKey才能生效的解决方案

    使用idea安装的翻译插件translation,但是使用的时候并不友好 无奈,如果想使用翻译软件并且更方便的话,可以如下: 可以选择将translation进行卸载 清除缓存并进行重启 然后再启动之 ...

  5. HyperLedger项目以及社区

    本文不涉及任何技术开发的内容,仅供你跟同学.同事吹牛B之用.就像很多牛人总爱讲历史典故一样. 一.诞生与现状 HyperLedger 诞生于2015年12月17日,HyperLedger 追寻Apac ...

  6. 洛谷 P1491 集合位置

    P1491 集合位置 题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的 ...

  7. Axis2中使用wsdl2java.bat生成客户端代码

    1 准备环境 (1)下载Axis2的zip包axis2-1.5.5-bin.zip,并解压. 官方网址:http://ws.apache.org/axis2/ (2)设置环境变量(我的电脑->属 ...

  8. linux系统读写缓存

    1.  操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列 ...

  9. Android:创建ZeroMQ的客户端

    这里我们将给出一个subscribe模式的客户端示例程序,如下: private class ZeroMQMessageTask extends AsyncTask<String, Void, ...

  10. Linux - Virsh

    virsh命令 suspend resume dumpxml   KVM平台以存储池的形式对存储进行统一管理,所谓存储池能够理解为本地文件夹.通过远端磁盘阵列(iSCSI.NFS)分配过来磁盘或文件夹 ...