安装 mysql2 模块
bash
npm install mysql2
使用 mysql2
连接池的方式,示例1
TypeScript
import mysql from 'mysql2';
// 创建连接池
const pool = mysql.createPool({
host: '127.0.0.1',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});
// 获取连接并执行 sql 语句,execute 方法不用手动调用释放连接,连接池会自动管理连接
pool.execute("update test set age = 22 where name = 'Tom'", (err, results, fields) => {
if (err) {
console.error(err);
return;
}
console.log(results); // 打印查询结果
});
连接池的方式,示例2,手动释放连接
TypeScript
import mysql from 'mysql2';
// 创建连接池
const pool = mysql.createPool({
host: '127.0.0.01',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});
// 获取连接
pool.getConnection((err, connection) => {
if (err) {
console.error(err);
return;
}
// 执行 sql 语句,防止 sql 注入的方式
connection.execute('UPDATE test SET age = ? WHERE name = ?', [23, 'Tom'], (err, results, fields) => {
if (err) {
console.error(err);
} else {
console.log(results); // 打印查询结果
}
// 手动释放连接
connection.release();
});
});
非连接池的方式
TypeScript
import mysql from 'mysql2';
// 创建一个连接
const connection = mysql.createConnection({
host: '192.168.189.71',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});
// 执行查询,也可以使用 connection.execute
connection.query('SELECT * FROM test', (err, results, fields) => {
if (err) {
console.error(err);
return;
}
console.log(results); // 打印查询结果
});
// 关闭连接
connection.end();
Promise 的方式
TypeScript
import mysql from 'mysql2/promise';
// 创建连接池
const pool = mysql.createPool({
host: '127.0.0.1',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});
async function getTest() {
const [rows, fields] = await pool.execute('SELECT * FROM test');
console.log(rows); // 打印查询结果
}
getTest();
事务
TypeScript
import mysql from 'mysql2/promise';
// 创建连接池
const pool = mysql.createPool({
host: '127.0.0.1',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});
// 使用事务执行多个查询
async function performTransaction() {
const connection = await pool.getConnection();
try {
await connection.beginTransaction();
// 执行多个查询
await connection.execute('INSERT INTO test (id, name, age) VALUES (?, ?, ?)', [7, 'zs', '20']);
await connection.execute('INSERT INTO test (id, name, age) VALUES (?, ?, ?)', [8, 'ls', '21']);
// 提交事务
await connection.commit();
console.log('Transaction completed');
} catch (err) {
// 如果出错,回滚事务
await connection.rollback();
console.error('Transaction failed', err);
} finally {
// 释放连接
connection.release();
}
}
performTransaction();