MySQL 如何在Node.js中使用mysql库来连接MySQL数据库

MySQL 如何在Node.js中使用mysql库来连接MySQL数据库

阅读更多:MySQL 教程

前言

MySQL是目前最流行的关系型数据库之一,而Node.js作为一门后端语言,也得到了广泛的应用。在实际开发中,很多时候需要在MySQL中执行SQL脚本,这时候我们就可以使用Node.js来实现。

本文将介绍如何在Node.js中使用mysql库来连接MySQL数据库,并执行SQL脚本。

准备工作

在接下来的步骤中,我们需要使用到以下工具和库:

  • MySQL

  • Node.js

  • mysql库(官方库,可通过npm安装)

  • fs库(官方库,无需安装)

连接MySQL数据库

在使用mysql库之前,需要先连接到MySQL数据库。以下是连接MySQL数据库的示例代码:

const mysql = require('mysql');

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'test'
});

// 连接数据库
connection.connect((err) => {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }
  console.log('connected as id ' + connection.threadId);
});

// 关闭数据库连接
connection.end((err) => {
  // The connection is terminated gracefully
  // Ensures all previously enqueued queries are still
  // before sending a COM_QUIT packet to the MySQL server.
});
JavaScript

在这个示例中,我们首先使用require引入mysql库,然后使用createConnection方法创建一个数据库连接,并传入连接MySQL所需的参数。之后我们使用connect方法连接到MySQL,如果连接成功,则会输出连接ID;否则会输出错误信息。最后我们使用end方法来关闭Connection对象。

运行SQL脚本

连接到MySQL数据库之后,我们需要运行SQL脚本。在Node.js中,我们可以通过fs库来读取指定路径下的SQL脚本文件,然后使用mysql库中的connection.query方法来执行脚本。

以下是运行SQL脚本的示例代码:

const fs = require('fs');
const mysql = require('mysql');

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'test'
});

// 读取SQL脚本
const sql = fs.readFileSync('./test.sql', 'utf-8');

// 执行SQL脚本
connection.query(sql, (error, results, fields) => {
  if (error) {
    console.error(error.message);
  } else {
    console.log(results);
  }
});

// 关闭数据库连接
connection.end((err) => {
  // The connection is terminated gracefully
  // Ensures all previously enqueued queries are still
  // before sending a COM_QUIT packet to the MySQL server.
});
JavaScript

在这个示例中,我们首先使用require引入fs库和mysql库,然后使用createConnection方法创建一个数据库连接,并传入连接MySQL所需的参数。接着,我们使用fs.readFileSync方法读取指定路径下的SQL脚本文件,将脚本内容储存在sql变量中。最后,我们使用connection.query方法执行脚本。如果执行出错,则输出错误信息;否则输出执行结果。

使用Promise封装

以上是通过回调函数来实现的,我们也可以使用Promise来封装。

以下是使用Promise封装的示例代码:

const fs = require('fs');
const mysql = require('mysql');

const executeSQL = (sqlFilePath) => {
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
  });

  // 创建Promise对象
  return new Promise((resolve, reject) => {
    connection.connect((err) => {
      if (err) {
        console.error('error connecting: ' + err.stack);
        reject(err.message);
        return;
      }
      console.log('connected as id ' + connection.threadId);
      const sql = fs.readFileSync(sqlFilePath, 'utf-8');
      connection.query(sql, (error, results, fields) => {
        if (error) {
          console.error(error.message);
          reject(error.message);
        } else {
          console.log(results);
          resolve(results);
        }
        connection.end((err) => {
          if (err) {
            console.error(err.message);
            reject(err.message);
          }
          console.log('connection closed');
        });
      });
    });
};

executeSQL('./test.sql')
  .then((results) => {
    console.log(results);
  })
  .catch((error) => {
    console.error(error);
  });
JavaScript

在这个示例中,我们首先定义了一个executeSQL函数,并传入SQL脚本文件的路径作为参数。在函数中,我们依然是先创建数据库连接,并通过Promise构造函数创建一个Promise对象。

在Promise中,我们依次执行连接数据库、读取SQL脚本、执行SQL脚本、关闭连接的操作,并根据执行结果调用resolve或reject来返回异步结果。

最后,我们通过调用executeSQL函数并使用then方法来获取异步结果。如果执行成功,则输出结果;否则输出错误信息。

总结

本文介绍了如何通过Node.js连接MySQL数据库,并运行SQL脚本。我们先使用mysql库来连接MySQL数据库,并使用connection.query方法来执行SQL脚本。之后,我们使用fs库来读取SQL脚本文件,并结合promise封装后,实现连接和脚本执行的异步操作。在实际开发中,可以根据自己的需求来选择不同的方法来执行SQL脚本。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册