nodejs连接mysql数据库简单封装示例-mysql模块

yizhihongxing

下面就是“nodejs连接mysql数据库简单封装示例-mysql模块”的完整攻略:

一、安装和配置mysql模块

1.首先需要全局安装mysql模块,可以使用以下命令进行安装:

npm install mysql -g

2.在项目中导入mysql模块,示例如下:

const mysql = require('mysql');

二、连接数据库

在使用mysql模块之前,需要使用mysql.createConnection()方法创建一个数据库连接对象,并设置连接参数,如下:

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'testdb1'
});

三、封装常用方法

在实际应用中,为了简化代码并提高代码的可维护性,一般会封装一些常用方法。下面列举两个常用方法的示例:

1.查询数据

function query(sql, options, callback) {
    connection.query(sql, options, (err, results) => {
        if (err) {
            console.error(err);
            callback(err, null);
            throw err;
        }
        callback(null, results);
    });
}

以上代码中,query()方法接收3个参数:sql语句、参数选项和回调函数。其中,sql语句和参数选项用于执行查询操作,回调函数用于处理查询结果。如果查询过程中出现错误,则调用回调函数并将错误返回,否则将查询结果返回。

2.执行事务

async function transaction(sqlArr, optionsArr) {
    // 启动事务
    await beginTransaction();
    let resultArr = [];
    try {
        for (let i = 0; i < sqlArr.length; i++) {
            const sql = sqlArr[i];
            const options = optionsArr[i];
            const res = await queryAsync(sql, options);
            resultArr.push(res);
        }
        // 提交事务
        await commit();
        return resultArr;
    } catch (error) {
        // 回滚事务
        await rollback();
        throw error;
    }
}

以上代码中,transaction()方法接收两个参数:sql语句数组和参数选项数组。在方法内部,我们先启动事务,然后使用queryAsync()方法依次执行sql语句,最后根据执行结果提交或回滚事务。

四、完整示例说明

以下是一个完整的示例,用于说明如何在nodejs中连接mysql数据库,并执行查询操作和事务操作:

const mysql = require('mysql');
const util = require('util');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'testdb1'
});

// 将query转为promise形式
const queryAsync = util.promisify(connection.query).bind(connection);

// 查询数据
function query(sql, options, callback) {
    connection.query(sql, options, (err, results) => {
        if (err) {
            console.error(err);
            callback(err, null);
            throw err;
        }
        callback(null, results);
    });
}

// 开启事务
function beginTransaction() {
    return queryAsync('START TRANSACTION');
}

// 提交事务
function commit() {
    return queryAsync('COMMIT');
}

// 回滚事务
function rollback() {
    return queryAsync('ROLLBACK');
}

async function transaction(sqlArr, optionsArr) {
    // 启动事务
    await beginTransaction();
    let resultArr = [];
    try {
        for (let i = 0; i < sqlArr.length; i++) {
            const sql = sqlArr[i];
            const options = optionsArr[i];
            const res = await queryAsync(sql, options);
            resultArr.push(res);
        }
        // 提交事务
        await commit();
        return resultArr;
    } catch (error) {
        // 回滚事务
        await rollback();
        throw error;
    }
}

// 查询例子
query('SELECT * FROM test_table WHERE name = ?', ['test'], (err, results) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(results);
    connection.end();
});

// 事务例子
transaction(['DELETE FROM test_table WHERE id = ?', 'UPDATE test_table SET value = ? WHERE id = ?'], [[1], [2, 'new value']])
    .then(results => console.log(results))
    .catch(error => console.error(error))
    .finally(() => connection.end());

上面的代码中,我们首先创建了一个数据库连接对象,然后定义了三个方法:query()、beginTransaction()、commit()和rollback()。其中,query()方法用于执行查询操作,事务方法用于执行事务操作。

最后,我们使用query()方法查询test_table表中name为test的数据,并使用事务方法依次执行了删除id为1的行和更新id为2的行的value字段。

以上就是“nodejs连接mysql数据库简单封装示例-mysql模块”的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs连接mysql数据库简单封装示例-mysql模块 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 开箱即用的Node.js+Mysql模块封装实现详解

    当我们开发Node.js后台应用时,常常需要使用数据库来存储和管理数据。而Mysql数据库是使用最广泛的关系型数据库之一。在Node.js中使用Mysql,需要使用mysql模块来连接Mysql数据库。但是,每次使用mysql模块时,都需要写很多重复的代码,包括连接数据库、执行sql语句等。为了提高开发效率,我们可以将这些常用的操作封装成一个模块,使得我们在…

    node js 2023年6月8日
    00
  • 一文详解package.json配置

    一文详解package.json配置 package.json是Node.js项目中的一个重要文件,它描述了项目的相关信息和依赖。本文将详细讲解package.json的各种属性和配置方式,帮助读者深入理解Node.js项目的开发和管理。 package.json的基本结构 package.json通常包含如下属性: { "name": …

    node js 2023年6月8日
    00
  • Node.js 去掉种子(torrent)文件里的邪恶信息

    当我们下载种子文件时,有时候会发现其中包含一些额外的信息,例如广告、病毒等,这些信息可能会影响到我们的下载体验和软件的安全性。本文将讲解如何使用 Node.js 去掉种子文件中的邪恶信息。 第一步:安装依赖库 我们需要使用到几个依赖库来帮助我们去掉种子文件中的邪恶信息,分别是 bencode、fs、path。 在终端输入以下命令安装依赖库: npm inst…

    node js 2023年6月8日
    00
  • 手把手教你用Node.js爬虫爬取网站数据的方法

    当需要获取互联网上的数据时,我们可以用爬虫技术来进行数据抓取。Node.js作为一款非常流行的后端开发框架,也有着极强的爬虫实现能力,其主要特点是依赖低,易于上手。 以下是用Node.js爬虫爬取网站数据的方法: 1. 安装Cheerio 在开始爬取信息前,我们需要安装cheerio这个npm模块。Cheerio是一个基于jQuery的服务器端的包裹器,使得…

    node js 2023年6月8日
    00
  • node.js中的fs.lstat方法使用说明

    下面是“node.js中的fs.lstat方法使用说明”的完整攻略。 目录 什么是fs.lstat方法? 如何使用fs.lstat方法? fs.lstat方法的示例 示例一:获取文件的类型 示例二:遍历文件夹 什么是fs.lstat方法? fs.lstat() 方法用于获取指定路径文件或目录的相关信息,包括文件类型、大小、权限等信息。与 fs.stat() …

    node js 2023年6月8日
    00
  • 微信小程序的开发范式BeautyWe.js入门详解

    微信小程序的开发范式BeautyWe.js入门详解 BeautyWe.js是什么 BeautyWe.js是一个基于weui-wxss的小程序开发框架。它封装了常用的小程序开发工具和库,提供了更加高效熟悉的开发范式,从而帮助开发者更加轻松地开发小程序。 BeautyWe.js的使用方法 在微信开发者工具中创建一个新的小程序项目; 在项目根目录下执行npm in…

    node js 2023年6月8日
    00
  • Nodejs处理Json文件并将处理后的数据写入新文件中

    下面是Node.js处理JSON文件并将处理后的数据写入新文件中的完整攻略: Step 1:读取JSON文件 要读取JSON文件中的数据,可以使用Node.js的fs模块中的readFile()方法。 const fs = require(‘fs’); fs.readFile(‘path/to/json/file.json’, ‘utf8’, (err, d…

    node js 2023年6月8日
    00
  • Nodejs + Websocket 指定发送及群聊的实现

    下面是针对“Nodejs + WebSocket 指定发送及群聊的实现”的完整攻略: 1. 基本概念 什么是 WebSocket? WebSocket 是一种 HTML5 中的新技术,它允许客户端和服务器之间建立一个双向的、基于浏览器的实时通信通道。通俗地说,WebSocket 就是可以在浏览器和服务器之间实现双向通信的技术。 什么是 Node.js? No…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部