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);
    })
})
复制代码

 

 

 

 

 

 

posted @   古墩古墩  Views(1917)  Comments(0Edit  收藏  举报
编辑推荐:
· 基于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最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示