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); }) })
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通