NodeJS操作数据库

一、前奏

本文说明:介绍如何使用NodeJS操作mysql数据库
需要准备:需要安装MySQL数据库、Node环境、数据库图形界面工具SQLyog、VSCode开发工具
安装包下载:https://www.aliyundrive.com/s/9hcTnhxxpot
在这里插入图片描述

二、数据库和表准备

# 创建数据库
CREATE DATABASE shopping;
# 创建数据表
CREATE TABLE shop(
	id INT PRIMARY KEY AUTO_INCREMENT, -- 主键
	shopname VARCHAR(100),	-- 店铺名称
	mrgname	VARCHAR(100),	-- 店长名字
	telphone VARCHAR(11),	-- 联系电话
	business VARCHAR(120)	-- 主营业务
	
);

三、npm安装mysql模块

由于Node默认环境中并不包含mysql模块,需要在使用mysql之前先安装此模块
准备工作:在硬盘创建demo的目录,作为项目根目录
使用vscode打开demo此目录,在vscode中打开终端
在这里插入图片描述
输入下面命令:

npm install mysql

命令输入后,按下回车键,等待模块安装完成,如下所示
在这里插入图片描述
添加的mysql模块在项目node_modules 目录下(暂时不用关心这个目录)
在这里插入图片描述
接下来就可以进行编码了。在项目根目录下db.js文件。
在这里插入图片描述
代码书写在db.js文件中

四、引入msyql模块

// 引入http作为服务器
const http = require("http");
// 引入数据库
const mysql = require("mysql");

// 连接数据库
var connection = mysql.createConnection({
    host     : 'localhost',         //服务器地址,连接本机可以使用localhost或者127.0.0.1
    user     : 'root',              //连接数据库的用户名
    password : '123',               //连接数据库的密码
    database : 'shopping',          //数据库的名称
    port     : 3306                 //数据库端口号,默认3306,可以省略不写
});

五、执行插入操作

function addData( datas ) { 
    // 打开数据库连接
    connection.connect();
    // 执行简单的数据库插入操作
    let sql = "insert into shop values( null , ? , ? , ? , ? )";
    // 执行插入操作
    connection.query(sql,datas,function (err, result) {
        if(err){
            console.log('插入失败',err.message);
            return;
        }     
        console.log('插入成功:',result);        
    });
    // 释放数据库连接
    connection.end();
}

addData(['秦臻米皮', '灭绝师太', '10086', '小吃']);

六、修改数据库

// 定义函数,封装修改数据库数据的方法,参数为需要修改的数据
function updateData(datas) { 
    // 打开数据库连接
    connection.connect();
    // 编写sql语句
    var sql = 'update shop set shopname = ? , mrgname = ? , telphone = ? , business = ? WHERE Id = ?';
    // 执行sql,并处理执行的结果
    connection.query(sql,datas,function (err, result) {
        if(err){
                console.log('修改失败: ',err.message);
                return;
        }        
        console.log('修改成功,受影响的行数:',result.affectedRows);
    });
    // 释放数据库连接
    connection.end();
}
updateData(['老碗面', '张无忌', '10010', '面食' , 2]);

七、删除数据库

温馨提示:删除必须传递删除条件,否则删除就是整张表的数据(此操作非常危险

// 定义函数,封装删除数据,需要传入待删除数据的id
function deleteById( id ) { 
    // 打开数据库连接
    connection.connect();
    // 编写sql语句
    var sql = 'delete from shop where id = ? ';
    // 执行sql,并处理执行的结果
    connection.query(sql, id , function (err, result) {
        if(err){
            console.log('删除失败:',err.message);
            return;
        }      
        console.log('删除成功,影响的行数:',result.affectedRows);
    });
    // 释放数据库连接
    connection.end();
}
deleteById(1);

八、查询数据库,简单处理结果

// 查询操作,封装函数,查询当前表的所有数据
function selectAll() { 
    // 打开数据库连接
    connection.connect();
    // 编写sql语句
    let sql = "select * from shop";
    // 执行sql,并处理执行的结果,查询的结果在results变量中,results其实是一个数组
    connection.query(sql, function (error, results, fields) {
        if (error)
            throw error;
        console.log('查询的结果:', results);
    });
    // 释放数据库连接
    connection.end();
}
selectAll();

九、根据id查询数据

// 查询指定id的数据
function selectById(id) { 
    // 打开数据库连接
    connection.connect();
    // 编写sql语句
    let sql = "select * from shop where id = ?";
    // 执行sql,并处理执行的结果,查询的结果在results变量中,results其实是一个数组
    connection.query(sql, id, function (error, results, fields) {
        if (error)
            throw error;
        console.log('查询的结果:', results);
    });
    // 释放数据库连接
    connection.end();
}
selectById(2);
  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在 Node.js 中使用数据库进行查询操作时,可以使用回调函数或 Promise 来获取查询的返回数据。 使用回调函数的方式,可以在查询语句执行完成后,将查询结果作为参数传递给回调函数。例如: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'example_db' }); connection.connect(); connection.query('SELECT * FROM users', (error, results, fields) => { if (error) throw error; console.log(results); }); connection.end(); ``` 在上面的示例中,当查询语句执行完成后,会调用传递的回调函数,并将查询结果作为第二个参数传递给回调函数。 使用 Promise 的方式,可以使用 Node.js 中的 `util` 模块中的 `promisify` 方法将 Node.js 的回调函数转换为 Promise。例如: ``` const mysql = require('mysql'); const util = require('util'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'example_db' }); const query = util.promisify(connection.query).bind(connection); connection.connect(); query('SELECT * FROM users') .then((results) => { console.log(results); }) .catch((error) => { throw error; }) .finally(() => { connection.end(); }); ``` 在上面的示例中,使用了 `util.promisify` 方法将 `connection.query` 方法转换为 Promise。然后可以通过 `then` 方法获取查询结果,或者通过 `catch` 方法捕获查询错误。最后,使用 `finally` 方法关闭数据库连接。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QB哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值