在本教程中,您将学习如何从node.js应用程序连接到mysql数据库服务器。
安装node.js mysql驱动程序
有一些选项可以从node.js应用程序与mysql进行交互。在本教程中,我们将向您展示如何使用名为mysqljs/mysql的mysql的node.js驱动程序。
首先,创建一个用于存储node.js应用程序的文件夹,例如,在f:workspmysqlnodejsnodejs-connect目录,并使用npm init命令创建package.json文件:
f:workspmysqlnodejsnodejs-connect> npm init
其次,使用以下命令为mysql软件包安装node.js:
f:workspmysqlnodejsnodejs-connect> npm install mysql
第三步,在nodejs-connect文件夹内创建connect.js,用于存储连接到mysql数据库服务器的代码。
我们将使用todoapp数据库进行演示,因此,先运行以下命令在mysql数据库服务器中创建数据库:
create database todoapp default charset utf8;
创建数据库后,就可以从node.js应用程序连接到mysql数据库了。接下来编写node.js的相关代码。
从node.js连接到mysql数据库服务器
首先,使用以下语句导入mysql模块:
let mysql = require('mysql'); 其次,通过调用createconnection()方法并提供mysql服务器上的详细信息(如主机,用户,密码和数据库),建立与mysql数据库的连接,如下所示:
let connection = mysql.createconnection({
host: 'localhost',
user: 'root',
password: '',
database: 'todoapp'
}); 在本示例中,我们在本地数据库服务品上与todoapp数据库的连接。
第三步,在连接对象上调用connect()方法连接到mysql数据库服务器:
connect()方法接受一个具有err参数的回调函数,如果发生任何错误,它将提供详细的错误。
connection.connect(function(err) {
if (err) {
return console.error('error: ' + err.message);
}
console.log('connected to the mysql server.');
}); 完整的connect.js程序代码如下所示 -
let mysql = require('mysql');
let connection = mysql.createconnection({
host: 'localhost',
user: 'root',
password: '123456',
database: 'todoapp'
});
connection.connect(function(err) {
if (err) {
return console.error('error: ' + err.message);
}
console.log('connected to the mysql server.');
}); 我们来运行并测试一下connect.js程序 -
f:workspmysqlnodejsnodejs-connect>node connect.js openssl config failed: error:02001003:system library:fopen:no such process connected to the mysql server.
如果看到如上所示的“connected to the mysql server”的消息,那么恭喜,您已经从node.js应用程序成功连接到mysql数据库服务器。
假设使用mysql用户账号的密码有错,并尝试连接到数据,您将收到一条错误消息:
f:workspmysqlnodejsnodejs-connect>node connect.js openssl config failed: error:02001003:system library:fopen:no such process error: er_access_denied_error: access denied for user 'root'@'localhost' (using password: yes)
请注意,您在connection对象上调用的每个方法都按顺序排队和执行。
关闭数据库连接要正常关闭数据库连接,请在connection对象上调用end()方法。
end()方法确保在数据库连接关闭之前始终执行所有剩余的查询。
connection.end(function(err) {
if (err) {
return console.log('error:' + err.message);
}
console.log('close the database connection.');
}); 要立即强制连接,可以使用destroy()方法。 destroy()方法保证不会再为连接触发回调或事件。
connection.destroy();
请注意,destroy()方法不会像end()方法那样采取任何回调参数。
到目前为止,整个connect.js文件的完整代码如下 -
let mysql = require('mysql');
let connection = mysql.createconnection({
host: 'localhost',
user: 'root',
password: '123456',
database: 'todoapp'
});
connection.connect(function(err) {
if (err) {
return console.error('error: ' + err.message);
}
console.log('connected to the mysql server.');
});
//connection.destroy();
connection.end(function(err) {
if (err) {
return console.log('error:' + err.message);
}
console.log('close the database connection.');
}); 池连接/连接池
node.js模块的mysql驱动程序为您提供了内置的连接池功能 假设您要创建一个具有5个连接的连接池:
var pool = mysql.createpool({
connectionlimit: 5,
host: 'localhost',
user: 'root',
password: '',
database: 'todoapp'
}); 要从池中获取连接,可以使用getconnection()方法:
pool.getconnection(function(err, connection) {
// execute query
// ...
}); 要在完成连接后将其连接到池,可以调用connection.release()。 之后,连接将在池中可用,并可以由其他人再次使用。
pool.getconnection(function(err, connection) {
// execute query
// ...
connnection.release();
}); 要关闭连接并将其从池中删除,请使用connection.destroy()方法。 如果下次需要,将在池中创建一个新的连接。
请注意,连接池中所建立的连接是懒惰的。例如,如果您使用5个连接配置连接池,但是同时仅使用2个连接,则连接池仅创建2个连接。
要关闭池中的所有连接,请使用pool对象的end()方法,如下所示:
pool.end(function(err) {
if (err) {
return console.log(err.message);
}
// close all connections
}); 在本教程中,您已经学会了如何从node.js应用程序连接到mysql数据库。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!