expressjs 中的mysql.createConnection,execute 怎么使用

在 Express.js 应用中使用 MySQL 数据库,你通常会使用 mysqlmysql2 这样的库来创建和管理数据库连接,并执行查询。然而,mysql.createConnection 并不直接提供 execute 方法。相反,你可以使用 query 方法来执行 SQL 语句。

以下是一个使用 mysql2 库(它是 mysql 库的一个流行替代品,支持 Promises 和 async/await)的示例,展示了如何在 Express.js 应用中连接 MySQL 数据库并执行查询。

1. 安装依赖

首先,你需要安装 expressmysql2 库。

npm install express mysql2

2. 创建 Express 应用并连接 MySQL

以下是一个简单的示例,展示了如何设置 Express 应用,连接到 MySQL 数据库,并执行一个简单的查询。

const express = require('express');
const mysql = require('mysql2/promise');

const app = express();
const port = 3000;

// 数据库配置
const dbConfig = {
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
};

// 创建一个数据库连接池
let pool;

(async () => {
  pool = await mysql.createPool(dbConfig);
  app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}/`);
  });
})();

// 定义一个路由来执行查询
app.get('/data', async (req, res) => {
  try {
    const connection = await pool.getConnection();
    const [rows, fields] = await connection.execute('SELECT * FROM your_table');
    connection.release();
    res.json(rows);
  } catch (error) {
    console.error('Error executing query:', error);
    res.status(500).json({ error: 'Failed to fetch data' });
  }
});

// 处理未捕获的异常
process.on('uncaughtException', (err) => {
  console.error('Uncaught Exception:', err);
  process.exit(1);
});

process.on('unhandledRejection', (reason, promise) => {
  console.error('Unhandled Rejection at:', promise, 'reason:', reason);
  process.exit(1);
});

注意事项

  1. 配置数据库连接:确保你已经正确配置了数据库连接参数(host, user, password, database)。
  2. 使用连接池:在这个示例中,我们使用连接池来管理数据库连接。连接池可以显著提高性能和可靠性。
  3. 错误处理:示例中包含了基本的错误处理逻辑。在生产环境中,你可能需要更详细的日志记录和错误处理。
  4. 安全性:不要将数据库凭据硬编码在代码中。考虑使用环境变量或配置文件来管理敏感信息。
  5. 关闭连接:虽然在这个示例中使用了连接池,但在不使用连接池的情况下,记得在查询完成后关闭数据库连接。

使用 query 方法(替代 execute

虽然 mysql2 提供了 execute 方法来执行带有参数的查询,但你也可以使用更通用的 query 方法。以下是一个使用 query 方法的示例:

app.get('/data', async (req, res) => {
  try {
    const connection = await pool.getConnection();
    const [rows, fields] = await connection.query('SELECT * FROM your_table');
    connection.release();
    res.json(rows);
  } catch (error) {
    console.error('Error executing query:', error);
    res.status(500).json({ error: 'Failed to fetch data' });
  }
});

在这个例子中,query 方法被用来执行相同的 SQL 查询。query 方法更通用,适用于所有类型的 SQL 语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

读心悦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值