nodejs连接mysql并执行sql语句,mysql连接池
安装mysql模块:
npm install mysql --save
来看个例子:
const mysql = require("mysql") // mysql中的createConnection方法 可以创建连接 const conn = mysql.createConnection({ host:"localhost",//连接地址 user:"root",//用户 password:"123456",//密码 port:'3306',//端口 database:"user_test",//要连接的数据库 }) // 建立连接 conn.connect(); // 建立一个变量 存储sql语句 let sql = 'select * from user'; // 连接 有一个query方法 用来执行sql语句 conn.query(sql,(err,result) => { if(err) throw err; console.log(result); }) // 断开/关闭链接 执行完sql语句就可以关闭连接 conn.end();
结果:
[ RowDataPacket { id: 1, name: 'eric', city: '广州', sex: 2 }, RowDataPacket { id: 2, name: '小明', city: '北京', sex: 2 }, RowDataPacket { id: 3, name: '小花', city: '上海', sex: 1 }, RowDataPacket { id: 4, name: '小美', city: '深圳', sex: 1 }, RowDataPacket { id: 5, name: '小小', city: '北京', sex: 1 }, RowDataPacket { id: 6, name: '小小2', city: '广州', sex: 1 }, RowDataPacket { id: 9, name: '小小', city: '北京', sex: 1 }, RowDataPacket { id: 10, name: '小小', city: '北京', sex: 1 }, RowDataPacket { id: 11, name: '小花', city: '北京', sex: 1 } ]
另外,sql语句传参的方式:
const mysql = require("mysql") // mysql中的createConnection方法 可以创建连接 const conn = mysql.createConnection({ host:"localhost",//连接地址 user:"root",//用户 password:"123456",//密码 port:'3306',//端口 database:"user_test",//要连接的数据库 }) // 建立连接 conn.connect(); // 建立一个变量 存储sql语句 ?是一个占位符 用来传参 let sql = 'select * from user where id = ?'; // 连接 有一个query方法 用来执行sql语句 如果传参就要启用第二个参数 第二个参数如果是单个可以直接传字符串 多个就用数组 我们这里直接用数组 conn.query(sql,[10],(err,result) => { if(err) throw err; console.log(result); }) // 断开/关闭链接 执行完sql语句就可以关闭连接 conn.end();
结果:
[ RowDataPacket { id: 10, name: '小小', city: '北京', sex: 1 } ]
以上的方式每一个用户都会建立一个连接,如果用户少还可以,如果高达上百万,那么对应创建上百万的连接,这对系统是一个很大的开销,那么mysql连接池可以解决这样的问题:
连接池的使用:
const mysql = require("mysql") // 创建连接池 const pool = mysql.createPool({ connectionLimit:10,//同时创建连接的最大连接数 host:"localhost",//连接地址 user:"root",//用户 password:"123456",//密码 port:'3306',//端口 database:"user_test",//要连接的数据库 }) // 连接池有一个方法是 getConnection pool.getConnection((err,conn) => { // 第二个参数 conn就是是获取到的连接 if(err) throw err; // 建立一个sql语句 let sql = 'select * from user where id = ?'; // 执行sql语句 conn.query(sql,[10],(err,result) => { // 不管是否 报错 首先将连接 释放掉 conn.release() if(err) throw err; console.log(result); }) })
。