nodejs中使用mysql的注意事项和常用语句

本文介绍了在Node.js中使用MySQL的注意事项,包括安装、基本用法、连接与连接池、事务处理、并发控制以及常用的SQL语句如UNION和JOIN。重点讲解了如何避免SQL注入,创建连接池,事务的隔离级别以及在并发场景下的数据一致性处理。
摘要由CSDN通过智能技术生成

安装mysql

    npm i --save mysql

基本用法

创建管理一个连接

    var mysql = require('mysql');
    var connection = mysql.createConnection({
   
        host: 'aliyuncs.com',
        user: 'admin',
        password: 'pwd'
    });

    connection.connect(function(err) {
   
        if (err) {
   
            console.error('error connecting: ' + err.stack);
            return;
        }

        connection.query('SELECT * FROM ...', ..., function (error, results, fields) {
   
            if (error) throw error;
            
            //do something


            connection.end();
        });
    });

转义

为了避免SQL注入攻击,在SQL查询中使用任何用户提供的数据之前,始终应该对其进行转义。

手动转义

mysql提供了mysql.escape(), connection.escape() 和 pool.escape()

var userId = 'user input values';
var sql    = 'SELECT * FROM users WHERE userId = ' + connection.escape(userId);
connection.query(sql, function (error, results, fields) {
   
    if (error) throw error;
    //do something
});

自动转义

使用?字符作为要转义的值的占位符

connection.query('UPDATE users SET name = ?, address = ? WHERE userId = ?', [inputName, inputAddress, userId], function (error, results, fields) {
   
    if (error) throw error;
    //do something
});

连接和连接池

当我们一个api接口需要连接到数据库进行增删改查的时候,如果每次去创建连接然后去关闭,会大大的消耗数据库服务的性能。

连接池

连接是由池延迟创建的,基本流程是pool.getConnection() -> connection.query() -> connection.release(),有助于共享连接状态以用于后续查询。

    var mysql = require('mysql');
    var pool  = mysql.createPool({
   
        connectionLimit: 10,
        host: 'aliyuncs.com',
        user: 'admin',
        password: 'pwd',
        database: 'db',
        timezone: 'Asia/Shanghai'
    });

    pool.getConnection(function(err, connection) {
   
        if (err) throw err; 

        connection.query('SELECT * FROM ...', ..., function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值