1. 安裝 MySQL 驅(qū)動(dòng)程序

Node.js 本身不直接支持 MySQL 數(shù)據(jù)庫(kù)連接,需要借助第三方驅(qū)動(dòng)程序。目前比較流行的 MySQL 驅(qū)動(dòng)程序有 "mysql" 和 "mysql2" 兩種,它們都提供了良好的 API 接口,可以方便地進(jìn)行數(shù)據(jù)庫(kù)操作??梢酝ㄟ^(guò) npm 安裝所需的驅(qū)動(dòng)程序,命令如下:

npm install mysql

或者

npm install mysql2

2. 建立數(shù)據(jù)庫(kù)連接

安裝好 MySQL 驅(qū)動(dòng)程序后,就可以開(kāi)始編寫 Node.js 代碼來(lái)連接 MySQL 數(shù)據(jù)庫(kù)了。首先需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,并配置相關(guān)的連接參數(shù),例如主機(jī)地址、端口號(hào)、用戶名和密碼等。示例代碼如下:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

connection.connect((err) => {
  if (err) throw err;
  console.log('Connected to MySQL database!');
});

3. 執(zhí)行 SQL 查詢

建立數(shù)據(jù)庫(kù)連接后,就可以使用 SQL 語(yǔ)句來(lái)查詢、添加、更新或刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)。以查詢?yōu)槔?,可以使?"connection.query()" 方法來(lái)執(zhí)行 SQL 語(yǔ)句,并通過(guò)回調(diào)函數(shù)處理查詢結(jié)果。示例代碼如下:

connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results);
});

4. 事務(wù)處理

在某些場(chǎng)景下,需要保證多個(gè) SQL 語(yǔ)句要么全部成功,要么全部失敗,這就需要用到事務(wù)處理。在 Node.js 中,可以通過(guò) "connection.beginTransaction()", "connection.commit()" 和 "connection.rollback()" 方法來(lái)實(shí)現(xiàn)事務(wù)操作。示例代碼如下:

connection.beginTransaction((err) => {
  if (err) throw err;

  connection.query('INSERT INTO users (name, email) VALUES (?, ?)', ['John Doe', 'john.doe@example.com'], (error, results, fields) => {
    if (error) {
      return connection.rollback(() => {
        throw error;
      });
    }

    connection.query('INSERT INTO orders (user_id, total) VALUES (?, ?)', [results.insertId, 100.00], (error, results, fields) => {
      if (error) {
        return connection.rollback(() => {
          throw error;
        });
      }
      connection.commit((err) => {
        if (err) {
          return connection.rollback(() => {
            throw err;
          });
        }
        console.log('Transaction completed successfully!');
      });
    });
  });
});

5. 連接池管理

在高并發(fā)的場(chǎng)景下,直接使用單個(gè)數(shù)據(jù)庫(kù)連接可能會(huì)出現(xiàn)性能問(wèn)題。這時(shí)可以使用連接池來(lái)管理數(shù)據(jù)庫(kù)連接,提高資源利用率。在 Node.js 中,可以通過(guò) "mysql.createPool()" 方法來(lái)創(chuàng)建一個(gè)連接池,并使用 "pool.query()" 方法來(lái)執(zhí)行 SQL 語(yǔ)句。示例代碼如下:

const pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

pool.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results);
});

6. 錯(cuò)誤處理

在使用 Node.js 連接 MySQL 數(shù)據(jù)庫(kù)時(shí),可能會(huì)遇到各種錯(cuò)誤,例如連接失敗、查詢失敗等。為了更好地處理這些錯(cuò)誤,可以在代碼中添加相應(yīng)的錯(cuò)誤處理邏輯。例如,可以使用 "try-catch" 語(yǔ)句來(lái)捕獲并處理異常,或者注冊(cè) "error" 事件來(lái)監(jiān)聽(tīng)錯(cuò)誤信息。示例代碼如下:

connection.on('error', (err) => {
  console.error('MySQL connection error: ', err);
  if (err.code === 'PROTOCOL_CONNECTION_LOST') {
    // 如果連接意外丟失,可以嘗試重新連接
    connection.connect();
  } else {
    throw err;
  }
});

綜上所述,使用 Node.js 連接 MySQL 數(shù)據(jù)庫(kù)的方法主要包括:準(zhǔn)備工作、安裝 MySQL 驅(qū)動(dòng)程序、建立數(shù)據(jù)庫(kù)連接、執(zhí)行 SQL 查詢、事務(wù)處理、連接池管理以及錯(cuò)誤處理等幾個(gè)步驟。通過(guò)本文的詳細(xì)介紹,相信讀者對(duì) Node.js 與 MySQL 的整合應(yīng)用已有了更加深入的了解。