从零学习node.js之mysql数据库的操作(五)

2020-06-17 05:54:20易采站长站整理

if(err) throw err;
console.log(result);
});

输出的结果:


OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
}

删除成功,则affectedRows为1,删除的数据不存在,则为0。

三、连接池

数据库连接是一种有限的,能够显著影响到整个应用程序的伸缩性和健壮性的资源,在多用户的网页应用程序中体现得尤为突出。

数据库连接池正是针对这个问题提出来的,它会负责分配、管理和释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个连接,释放空闲时间超过最大允许空闲时间的数据库连接以避免因为连接未释放而引起的数据库连接遗漏。

3.1 创建连接池

使用

mysql.createPool()
可创建连接池:


// test.js
var mysql = require('mysql');

var pool = mysql.createPool({
host : '127.0.0.1',
user : 'root',
password : '123',
database : 'test'
})

pool.query('SELECT * FROM `user`', function(err, result){
if(err) throw err;

console.log(result);

pool.end(function(err){
if(err) throw err;
console.log('connection ended');
})
});

getConnection()
可以共享一个连接,或管理多个连接。


// test.js
var mysql = require('mysql');

var pool = mysql.createPool({
host : '127.0.0.1',
user : 'root',
password : '123',
database : 'test'
})

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

connection.query('SELECT * FROM `user`', function(err, result){
if(err) throw err;

console.log(result);
})
});

连接使用完后通过调用

connection.release()
方法可以将连接返回到连接池中,这个连接可以被其它人重复使用:


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

connection.query('SELECT * FROM `user`', function(err, result){
if(err) throw err;

console.log(result);
connection.release();
// 接下来connection已经无法使用,它已经被返回到连接池中
})
});

可以使用

connection.destroy()
彻底销毁连接。

3.2 连接池事件

createPool()
方法会返回一个连接池实例对象,这个对象中有一些事件。