node中使用mysql

环境

mysql2是node链接mysql的数据库驱动

  1. 新建文件夹
  2. npm init -y
  3. npm install mysql2

mysql2基本使用

新建js文件,之后node运行

const mysql = require('mysql2')

// 1.建立与数据库的链接
const connection = mysql.createConnection({
    host: 'localhost', // 要链接的ip地址,本地localhost
    port: 3306,
    database: 'music_db',
    user: 'root',
    password: 'xxxxxxxxx',
})

// 2.执行操作语句,执行sql操作数据库
const statement = 'SELECT * FROM `t_mv`;'
// err:报错,values:值,fields:表的字段信息
connection.query(statement,(err,values,fields)=>{
    if (err) {
        console.log(err);
        return
    }
    console.log(values);
    console.log(fields);
})

预编译语句

  1. 提高性能:将创建的语句模块发送给MySQL,然后MySQL编译(解析、优化、转换)语句模块,并且存储它但是不执行,之
    后我们在真正执行时会给?提供实际的参数才会执行;就算多次执行,也只会编译一次,所以性能是更高的
  2. 防止SQL注入:之后传入的值不会像模块引擎那样就编译,那么一些SQL注入的内容不会被执行;or 1 = 1不会被执行
const mysql = require('mysql2')

// 1.建立与数据库的链接
const connection = mysql.createConnection({
...
})

// 2.执行操作语句,执行sql操作数据库
const statement = 'SELECT * FROM `t_mv` WHERE id > ? AND id < ? ;'
// 第二个是语句中?参数
connection.execute(statement,[1,3],(err,values,fields)=>{
    if (err) {
        return
    }
    console.log(values);
})

连接池

如果我们有多个请求,一个链接可能存在占用,我们每次请求是否需要创建一个新的链接?
mysql2提供了连接池
当需要时会自动创建链接,使用后不会销毁,放到链接池中之后使用,我们可以设置连接池最大链接数量

const mysql = require('mysql2')

// 1.建立与数据库的链接池
const connectionPool = mysql.createPool({
    ...
    connectionLimit: 5, // 链接池最大链接数量
})

const statement = 'SELECT * FROM `t_mv` WHERE id > ? AND id < ? ;'
// 链接池会自动创建链接
connectionPool.execute(statement,[1,3],(err,values,fields)=>{
    if (err) return
    console.log(values);
})

promise方式

const mysql = require('mysql2')

// 1.建立与数据库的链接池
const connectionPool = mysql.createPool({
    ...
})

const statement = 'SELECT * FROM `t_mv` WHERE id > ? AND id < ? ;'
// 需要先调promise函数
connectionPool.promise().execute(statement,[1,3]).then(res=>{
    // res是一个数组,两个值,res[0]是values,res[1]是fields
    const [values,fields] = res
    console.log(values);
    console.log(fields);
}).catch(err=>{
    console.log(err);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值