求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

Node.js连接MySQL数据库
705 次浏览
14次  

在本教程中,您将学习如何从node.js应用程序连接到MySQL数据库服务器。

安装node.js MySQL驱动程序

有一些选项可以从node.js应用程序与MySQL进行交互。在本教程中,我们将向您展示如何使用名为mysqljs/mysql的MySQL的node.js驱动程序。

首先,创建一个用于存储node.js应用程序的文件夹,例如,在F:\worksp\mysql\nodejs\nodejs-connect目录,并使用npm init命令创建package.json文件:

F:\worksp\mysql\nodejs\nodejs-connect> npm init

其次,使用以下命令为MySQL软件包安装node.js:

F:\worksp\mysql\nodejs\nodejs-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:\worksp\mysql\nodejs\nodejs-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:\worksp\mysql\nodejs\nodejs-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数据库。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



705 次浏览
14次
 捐助