从零开始Node.js—11mysql包的使用
前言
后端代码要实现对数据的存储、管理和维护,离不开工具数据库。
MySQL是市场上应用最广泛的开源免费数据库,非常建议学习。对于MySQL数据库介绍可以参考:安装教程,使用教程。本文的重点在express中远程使用数据库,用代码实现对MySQL中远程数据的增删改查。
一、使用mysql
若想在Node.js中操纵数据库MySQL,需要借助MySQL提供的官方包:mysql
① 安装第三方包mysql
npm install mysql
② 代码框架
// 1 引入mysql模块
const mysql = require('mysql');// 2 配置连接信息
const connection = mysql.createConnection({host: '127.0.0.1', // IP地址user: 'root', // 用户名 默认rootpassword: 'admin123', // 自己在MySQL中设置的密码database: 'my_db_01', // 数据库名字(不是表名)
})// 3 建立连接
connection.connect( (err) => {// 连接失败if (err) {console.error('error connecting: ' + err.stack);return;}// 连接成功console.log('connected as id ' + connection.threadId);
});// 4 增删改查
connection.query('SELECT 1 + 1 AS solution', (error, results, fields) => {if (error) throw error;console.log('The solution is: ', results[0].solution);
});// 5 断开连接
connection.end();
③ 增删改查
利用函数connection .query()
函数,第一个值为sql语句,可以采用?
占位,第二个值为数组(若只有一个,也可不写成数组),分别填充占位,第三个为回调函数。
const sqlStr = 'select ? from users where id = ?'
connection .query( sqlStr, [v1, v2], (err, results) => {} )
二、how to 增删改查
数据库my_db_01
中表users
的结构如下:id为主键,数字类型,唯一标识用户,在表中设置自增;status代表数据状态:0:未注销,1:注销,默认为0
1、查找数据
查找语句SELECT somedata FROM tablename
// 查询users表中的数据
connection.query('SELECT * FROME users', (err, results) => {if (error) {console.log(error);return;}console.log(results);
})
返回结果:数组
[RowDataPacket { id: 1, username: 'new_name', password: '12345', status: 0 },RowDataPacket { id: 2, username: 'ls', password: 'abc123', status: 0 },RowDataPacket { id: 3, username: 'xh', password: '65321', status: 1 },RowDataPacket { id: 4, username: 'kc', password: 'hwiquod', status: 1 }
]
2、添加数据
不同写法:
INSERT INTO tablename(列名…) VALUES(列值)
INSERT INTO tablename SET 列1 = 值1, 列2 = 值2,…
const user = {username: 'ss', password: '123456'};
// 构造sql字符串
const sqlStr = 'INSERT INTO users SET?';
// 操作数据库
connection.query(sqlStr, user, (error, results) => {if (error) {console.log(error);return;}if (results.affectedRows === 1) {console.log('新增数据成功');console.log(results);}
})
返回的results:对象
OkPacket { fieldCount: 0, affectedRows: 1, // 被影响的列数目insertId: 5,serverStatus: 2,warningCount: 0,message: '',protocol41: true,changedRows: 0
}
修改数据
UPDATE tablename SET 列1=值1 WHERE id = 1
const sqlStr = 'UPDATE users SET status = ? WHERE id = ?';
// 将id=2的用户状态设置为1
connection.query(sqlStr, [1, 2], (error, results) => {if (error) {console.log(error);return;}if (results.affectedRows === 1) {console.log('删除数据成功');console.log(results);}
返回results:对象
OkPacket {fieldCount: 0,affectedRows: 1,insertId: 0,serverStatus: 2,warningCount: 0,message: '(Rows matched: 1 Changed: 0 Warnings: 0',protocol41: true,changedRows: 0
}
删除数据
DELETE FROM tablename WHERE ...
const sqlStr = 'DELETE FROM users WHERE id = ?';
// 删除id=1的用户数据
connection.query(delsql, 1, (err, results) => {if(err) return console.log(err);if(results.affectedRows === 1 ){console.log('删除数据成功');console.log(results);}
})
返回results:对象
OkPacket { fieldCount: 0,affectedRows: 1,insertId: 0,serverStatus: 2,warningCount: 0,message: '',protocol41: true,changedRows: 0
}
三、留心留心
① 一般不删除,删除了用户再想恢复怎么办。所以一般增加一个status字段,来标识用户状态,达到“虚假删除”的目的
② 一定要写where子语句,特别是在更新和删除表时,不写默认对所有行进行操作,会造成严重的后果。
从零开始Node.js—11mysql包的使用相关推荐
- (18) Node.js npm包管理工具
一.npm概述 npm (Node Package Manager)是 Node.js 的包管理工具. 什么是包?包就是一坨代码,就是 Node.js 的第三方模块. 例如:JQuery模块,Boot ...
- Node.js之包管理npm
Node.js之包管理npm 前言 一.node.js下载 二. node的更新和其他操作 二.npm基本使用 1. 查看是否安装成功 2. 查看是否有npm 3. npm其他命令 前言 npm是no ...
- Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM
本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...
- Node.js——npm_包的概念与操作
目录 一.包与npm 1.包 2.npm与下载包 二.在项目中安装包 1.初体验安装包 2.了解包的语义化版本规范 3.解决多人协作开发时的拉取问题--包管理配置文件 1.自定义配置文件 2.包管理配 ...
- Node js npm 包管理工具的基本使用
初始化一个node项目 npm initnpm init -y 没有 -y 参数表示自定义一些参数 -y 参数表示默认选项 初始化项目之后就会多出一个 package.json 的文件 查找需要的包 ...
- 十次方需求分析与技术架构、Node.js、包资源管理器NPM、Webpack
1 十次方需求分析与技术架构 1.1 十次方是个什么样的网站 <十次方>是程序员的专属社交平台,包括头条.问答.活动.交友.吐槽.招聘六大 频道.如图所示: 十次方名称的由来:2的10次方 ...
- node-serialport —— Node.js 串口数据读写包
node-serialport 是一个 Node.js 的包,用来对串口数据进行读写操作. 基本示例代码: var SerialPort = require("serialport" ...
- node.js模块和包
概念:模块(Module)和包(Package)是Node.js最重要的支柱.开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分.分装.然后组合起来.模块正式为了实现这种方式而诞生, ...
- node.js 安装及配置(hello world)及 node 的包管理器(npm)
下载地址:Download | Node.js,无脑下一步安装即可: 安装时,会自动将 node 可执行文件路径添加进 Path 内,这样进入 cmd 命令行,以查看 node 的安装版本: > ...
最新文章
- 为什么集群要奇数_面试系列 redis数据删除amp;集群
- 计算机前端专业术语,学习计算机知识必须懂得50个专业术语
- 订阅基础:RSS、ATOM、FEED、聚合、供稿、合烧与订阅
- Boost:列出设备的测试程序
- 01、python数据分析与机器学习实战——python数据分析处理库-Pandas
- python之socket编程
- 防删库实用指南 | 只需一步,快速召回被误删的表
- 计算机环境安全服务未启动,windows10系统卡在“准备安全选项”如何解决
- Java语言对对象引用的4种方式
- 2015年10月26日作业
- 《Renewable Energy》论文格式
- ArduinoUNO实战-第十七章-火焰传感器
- php hapijs,hapi 起步
- 【STM32】HAL库 STM32CubeMX教程九---ADC
- java.lang.OutOfMemoryError异常及相关问题解决
- 嵌入式课程设计:socket通信模拟服务器客户端实现文件传送(基于c++语言)
- P2P: Tuning Pre-trained Image Models for Point Cloud Analysis with Point-to-Pixel Prompting
- 计算机电源寿命,影响电脑寿命的几个重要方面
- win10 LATEX 安装使用 支持前向 后向 (TeX Live 2021+VSCode【不需要额外下载PDF阅览器,不需要跟换任何路径】)
- Paper intensive reading (三):Interactions Between Food and Gut Microbiota: Impact on Human Health
热门文章
- 使用DMO遍历xml文件(将xml文件中要获取的内容存到ArrayList集合中再取出来)(DMO解析)
- cnc难还是java难,「柳师傅」做CNC编程还没搞清这个参数,就等于还没出徒...
- 创新模式驱动生产力提升,融云社交场景化 SDK 探索
- 三种主流的3D建模软件,建模小白必学,各自特点全面解析
- 650个常用网页图标PSD素材
- ffmpeg 合并多音轨的问题
- MYSQL数据库基础篇
- Redis面试题-Redis哨兵模式
- Mac电脑调整显示器显示对比度的方法
- Oracle EM 12c 如何切换备用的OMR数据库 - 1