Node.js连接MySQL数据库

在本教程中,您将学习如何从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数据库。

易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:”教程” 选择相关教程阅读或直接访问:http://m.yiibai.com 。

上一篇:MySQL+Node.js连接和操作
下一篇:MySQL+JAVA连接和操作

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • Java技术群: 227270512 (人数:2000,免费:否)
  • MySQL/SQL群: 418407075 (人数:2000,免费:否)
  • 大数据开发群: 655154550 (人数:2000,免费:否)
  • Python技术群: 287904175 (人数:2000,免费:否)
  • 人工智能深度学习: 456236082 (人数:2000,免费:否)
  • 测试工程师(新群): 415553199 (人数:1000,免费:否)
  • 前端技术群(新群): 410430016 (人数:1000,免费:是)
  • C/C++技术(新群): 629264796 (人数:1000,免费:是)
  • Node.js技术(新群): 621549808 (人数:1000,免费:是)
  • PostgreSQL数据库(新群): 539504187 (人数:1000,免费:是)
  • Linux技术: 479429477 (人数:2000,免费:否)
  • PHP开发者: 460153241 (人数:2000,免费:否)
  • Oracle数据库: 175248146 (人数:2000,免费:否)
  • C#/ASP.Net开发者: 579821706 (人数:2000,免费:是)
  • 数据分析师: 397883996 (人数:2000,免费:是)R语言,Matlab语言等技术

发表评论

您的电子邮箱地址不会被公开。