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)用已有了更加深入的了解。