Nodejs连接MySQL数据库模块node-mysql的使用

Nodejs连接MySQL数据库模块node-mysql的使用
node-mysql 是一个用于 Node.js 的 MySQL 客户端库,但请注意它已经被废弃,推荐使用 mysql2 模块,它是 node-mysql 的改进版,提供了更好的性能和更多的功能。不过,如果你坚持使用 node-mysql,以下是如何使用它的基本示例。

安装

首先,你需要安装 node-mysql

npm install mysql

连接到MySQL数据库

下面是一个简单的例子来展示如何连接到MySQL数据库并执行查询:

const mysql = require('mysql');

// 创建一个连接池
const pool = mysql.createPool({
  host: 'localhost', // 数据库服务器地址
  user: 'root', // 数据库用户名
  password: 'password', // 数据库密码
  database: 'testdb' // 要使用的数据库名
});

// 使用连接池连接数据库
pool.getConnection((err, connection) => {
  if (err) throw err; // 如果无法获取连接,则抛出错误
  console.log('Connected!');

  // 执行查询
  connection.query('SELECT * FROM users', (error, results, fields) => {
    if (error) throw error;

    console.log('The solution is: ', results);
    
    // 结束连接
    connection.release();
  });
});

// 为防止死锁,可以设置连接的最大空闲时间
pool.on('connection', function(connection) {
  connection.config.queryTimeout = 30000; // 30秒
});

执行查询

在上面的例子中,我们已经展示了如何执行一个简单的SQL查询。你也可以使用参数化查询来避免SQL注入攻击:

const sql = 'INSERT INTO users (name, email) VALUES (?, ?)';
const inserts = ['John Doe', 'john.doe@example.com'];
const query = mysql.format(sql, inserts);

pool.query(query, (error, results, fields) => {
  if (error) throw error;
  console.log('User inserted:', results.insertId);
});

错误处理

确保始终检查回调函数中的错误,并且在完成操作后释放连接。如果不这样做,可能会导致连接泄漏,最终耗尽可用的数据库连接。

关闭连接池

当你的应用结束时,记得关闭连接池:

pool.end((err) => {
  if (err) throw err;
  console.log('Connection pool closed.');
});

以上就是使用 node-mysql 模块的基本指南。如前所述,mysql2 是更推荐的选择,因为它提供了更好的性能和额外的功能。如果你准备切换到 mysql2,只需要安装它(npm install mysql2)并稍微调整一下代码即可。


3 回复

嘿,想要用Node.js连接MySQL数据库,node-mysql(现在更流行的是mysql模块)是个不错的选择!首先,确保安装了mysql模块,你可以用npm install mysql来搞定。

然后,你可以这样开始:

const mysql = require('mysql');

// 创建一个连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'yourusername',
  password: 'yourpassword',
  database: 'yourdatabase'
});

// 连接到数据库
connection.connect(error => {
  if (error) throw error;
  console.log('Connected!');
});

// 执行查询
connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log('查询结果:', results);
});

// 最后别忘了关闭连接
connection.end();

记得替换你的数据库信息哦!希望这能帮到你,祝编程愉快!


node-mysql 是一个用于 Node.js 的 MySQL 客户端库。不过需要注意的是,这个项目已经不再积极维护,推荐使用 mysql2 这个更活跃维护的替代品。但是,为了满足你的需求,我将介绍如何使用 node-mysql 来连接和操作 MySQL 数据库。

首先,你需要安装 node-mysql 库。你可以通过 npm 安装它:

npm install mysql

以下是如何使用 node-mysql 连接到 MySQL 数据库并执行基本查询的例子:

  1. 连接到数据库:
const mysql = require('mysql');

// 创建一个连接池
const pool  = mysql.createPool({
  connectionLimit : 10, // 池中最大连接数
  host            : 'localhost',
  user            : 'yourusername',
  password        : 'yourpassword',
  database        : 'yourdatabase'
});

// 使用连接池进行数据库查询
pool.query('SELECT * FROM users', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results);
});
  1. 处理连接错误: 在连接过程中可能会遇到各种错误(如网络问题或认证失败),你应该捕获这些错误来确保应用程序的健壮性。
pool.getConnection((err, connection) => {
  if (err) {
    throw err; // 或者可以处理错误
  }

  // 使用连接
  connection.query('SELECT * FROM users', (err, rows) => {
    // 释放连接
    connection.release();

    if (!connection) return;

    // 执行完后没有错误,继续处理数据
    if (err) throw err;

    console.log(rows);
  });

  // 如果有长时间运行的事务,可以通过超时机制来避免阻塞
  connection.config.queryTimeout = 30000; // 30秒超时
});
  1. 预处理查询: 预处理查询可以防止SQL注入攻击,确保查询安全。
pool.query('INSERT INTO users SET ?', {name: 'John Doe'}, function (error, results, fields) {
  if (error) throw error;
  console.log("New record has id: " + results.insertId);
});

以上就是使用 node-mysql 的基础示例。再次强调,考虑到 node-mysql 不再维护,推荐使用其改进版 mysql2

node-mysql 是一个已停止维护的 Node.js 连接 MySQL 的模块。推荐使用 mysql2,它是 node-mysql 的一个活跃分支,功能更强大。

首先,安装 mysql2

npm install mysql2

然后,可以这样使用它来连接和查询 MySQL 数据库:

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

async function queryDatabase() {
    const connection = await mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'password',
        database: 'testdb'
    });

    const [rows, fields] = await connection.execute('SELECT * FROM users');
    console.log(rows);
    
    connection.end();
}

queryDatabase();

这段代码创建了一个到本地 MySQL 数据库的连接,并执行了一个简单的查询。

回到顶部