当前位置: 首页 > news >正文

【Node.js】MySQL数据库的第三方模块(mysql)

mysql

          • 安装操作MySQL数据库的第三方模块(mysql)
          • 通过第三方模块(mysql2)连接到MySQL数据库
          • mysql插入数据
          • mysql插入数据的便捷方式
          • mysql更新数据
          • mysql更新数据的便捷方式
          • mysql删除数据

在这里插入图片描述

安装操作MySQL数据库的第三方模块(mysql)
  • npm init -y,对项目进行初始化操作,对包进行管理
  • npm install mysql 安装第三方模块
  • 安装完,必须进行配置!
// 1.导入mysql模块
// const mysql = require('mysql')
// mysql模块不兼容,检测时会报错
// 报错Client does not support authentication protocol requested by server; consider upgrading MySQL client,
// 所以安装mysql2,使用npm i mysql2安装,再导入 mysql2
通过第三方模块(mysql2)连接到MySQL数据库
// 1.导入mysql2模块
const mysql = require('mysql2')
// 2,建立与MySQL数据库的连接
const db = mysql.createPool({host: "127.0.0.1", //数据库的IP地址user: "root", //登录数据库的账号password: "lusheng123", //登录数据库的密码database: "my_db_01", //指定要操作哪个数据库
}) //3.检测mysql模块是否正常工作 SELECT 1 无作用,只是测试
db.query('SELECT 1',(err, results) => {//err为报错信息if (err) return console.log(err)//res是成功的消息console.log(results) 
}) 
  • 打印出这个就证明成功
    在这里插入图片描述
mysql插入数据
  • 如果执行的select查询语句,则执行的结果是数组
  • insert into,执行的结果是对象
  • results.affectedRows代表操作的行数,等于1代表插入成功
// 插入新增数据,其中username为西游记,password是000000
// 定义要插入的对象数据
const user = {username: "西游记",password: "000000"
}
// 定义待执行的SQL语句,别写错了
const sqlstr= 'insert into users (username,password) values (?,?)'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr,[user.username,user.password], (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if(results.affectedRows===1){console.log("插入数据成功")}
}) 
  • 数据库查询,果然成功了
    在这里插入图片描述
mysql插入数据的便捷方式
  • 当新增数据时候,如果数据对象的每个属性和数据表的字段一一对应
  • set ? ,代表这个对象身上有几个属性就插入几个属性
// 定义要插入的对象数据
const user1 = {username: "西游记1",password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1= 'insert into users set ?'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr1,user1, (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if(results.affectedRows===1){console.log("插入数据成功")}
}) 
mysql更新数据
const user1 = {id: 7,username: "红楼梦",password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set username=?,password=? where id = ?'
db.query(sqlstr1, [user1.username, user1.password, user1.id], (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if (results.affectedRows === 1) {console.log("更新数据成功")} 
})
mysql更新数据的便捷方式
const user1 = {id: 7,username: "红楼梦1",password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set ? where id = ?'
db.query(sqlstr1, [user1, user1.id], (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if (results.affectedRows === 1) {console.log("更新数据成功")} 
})
mysql删除数据
  • 删除数据的时候,推荐根据id这样的唯一标识,来删除对应的数据

  • 执行delete 语句后,结果也是一个对象

  • 如果有多个占位符,则必须使用数组为每个占位符指定具体的值

  • 如果只有一个,数组可省略

// 定义待执行的SQL语句
const sqlstr = 'delete from users where id=?'
db.query(sqlstr,6, (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if (results.affectedRows === 1) {console.log("删除成功")} 
})
  • 标记删除
  • 当然,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作,就是设置状态字段,来标记当前数据是否被删除
  • 字段参数status为1代表已删除,为0代表未删除
// 定义待执行的SQL语句
const sqlstr = 'update users set status=? where id=?'
db.query(sqlstr,[1,7], (err, results) => {//err为报错信息if (err) return console.log(err.message)//res.affectedRows是影响的行数if (results.affectedRows === 1) {console.log("标记删除数据成功")} 
})

相关文章:

【Node.js】MySQL数据库的第三方模块(mysql)

mysql安装操作MySQL数据库的第三方模块(mysql)通过第三方模块(mysql2)连接到MySQL数据库mysql插入数据mysql插入数据的便捷方式mysql更新数据mysql更新数据的便捷方式mysql删除数据安装操作MySQL数据库的第三方模块(my…...

Docker中安装并配置单机版redis

1、使用docker安装redis 搜索Reis镜像,这里展示的是官方最新的镜像docker search redis 使用官方dockerhub搜索redis 2、选用常用的redis5.0作为安装的版本docker pull redis:5.0 3、运行redis容器的两种方式 3.1 不映射外部配置文件直接运行redis5.0镜像docker …...

模拟微信聊天-课后程序(JAVA基础案例教程-黑马程序员编著-第八章-课后作业)

【案例9-1】 模拟微信聊天 【案例介绍】 1.案例描述 在如今,微信聊天已经人们生活中必不可少的重要组成部分,人们的交流很多都是通过微信来进行的。本案例要求:将多线程与UDP通信相关知识结合,模拟实现微信聊天小程序。通过监…...

html2canvas将页面dom元素内容渲染成图片保存至本地

html2canvas:https://html2canvas.hertzen.com/configuration/ github:https://github.com/niklasvh/html2canvas 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compa…...

前端进阶JS运行原理

JS运行原理 深入了解V8引擎原理 浏览器内核是由两部分组成的&#xff0c;以webkit为例&#xff1a; WebCore&#xff1a;负责HTML解析、布局、渲染等等相关的工作&#xff1b;JavaScriptCore&#xff1a;解析、执行JavaScript代码&#xff1b; 官方对V8引擎的定义&#xff1…...

Python识别二维码的两种方法(cv2)

在学习Python处理二维码的过程中&#xff0c;我们看到的大多是“用python生成酷炫二维码”、“用Python制作动图二维码”之类的文章。而关于使用Python批量识别二维码的教程&#xff0c;并不多见。所以今天我会给大家分享两种批量识别二维码的Python技巧&#xff01;pyzbar PI…...

用一个例子告诉你 怎样使用Spark中RDD的算子

目录 1. 前言 1.1 操作分类 1.2 语法知识 2. transformations 2.1 map 2.2 mapPartitions 2.3 flatMap 2.4 glom 2.5 groupBy 2.6 filter 2.7 sample 2.8 distinct 2.9 coalesce 2.10 repartition 2.11 sortBy 2.12 partitionBy 2.13 reduceByKey 2.14 gro…...

什么是跨域? 出现原因及解决方法

目录一、什么是跨域二、为什么有跨域问题&#xff1f;三、解决跨域问题的方案1.Jsonp2.nginx3.CORS3.1 什么是cors3.2 原理四、GateWay网关中实现跨域步骤一、什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用户…...

低代码系统能够解决哪些痛点?

低代码系统能够解决哪些痛点&#xff1f;如果用4句话去归纳&#xff0c;低代码开发可以解决以下问题—— 为企业提供更高的灵活性&#xff0c;用户可以突破代码的限制自主开发业务应用&#xff1b;通过减少对专业软件开发人员的依赖&#xff0c;公司可以快速响应市场上的新业务…...

华为OD机试题,用 Java 解【两数之和绝对值最小】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

AcWing算法提高课-3.1.1热浪

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪&#xff01;&#xff01;&#xff01; 他们的德克萨斯长角牛吃起来不错&#xff0c;可是它们并不是很擅长生产富…...

华为OD机试题【最差产品奖】用 C++ 编码,速通 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明最差产…...

NFT市场大战:Blur市场地位可持续吗?

在战胜无数虚张声势的挑战者之后&#xff0c;OpenSea终于迎来了一个实力雄厚的竞争对手&#xff0c;已威胁到它的市场主导地位。opensea是什么&#xff1f;参考《NFT&#xff0c;区块链的产物之一&#xff0c;了解NFT交易平台Opensea》 继成功的空投之后&#xff0c;Blur并没有…...

初识CSS

1.CSS语法形式CSS基本语法规则就是:选择器若干属性声明由选择器选择一个元素,其中的属性声明就作用于该元素.比如:<body><p>这是一个段落</p><!-- style可以放在代码的任意地方 --><style>p{/* 将字体颜色设置为红色 */color: red;}</style&g…...

kubernetes(k8s)知识总结(第3期)

1. PV 与 PVC PV 是持久卷&#xff08;Persistent Volume&#xff09;的首字母缩写。通常情况下&#xff0c;可以事先在 k8s 集群创建 PV 对象&#xff1a; apiVersion: v1 kind: PersistentVolume metadata:name: nfs spec:storageClassName: manualcapacity:storage: 1Giac…...

浅谈跨境电商运行模式

近些年&#xff0c;由于疫情的原因和人们的消费习惯的改变&#xff0c;线下销售越来越不占优势&#xff0c;电商行业由于这几年的飞速发展&#xff0c;成功地吸引到我国的民众&#xff0c;拼多多、淘宝、京东、天猫等各种各样的国内电商平台涌现&#xff0c;依靠着产品质量好、…...

Memcached

什么是MemcachedMemcached 是一个开源免费的高性能的分布式内存对象缓存系统、就是一个软件Memcached的作用缓存数据提高动态网站的速度Memcached的安装//方法一yum installmemcached//方法二1.安装libevent (memcached依赖包)tar -zvxflibevent-release-1.4.15-stable.tar.gzc…...

Unity UGUI 拖拽组件

效果展示 使用方式 拖到图片上即可用 父节点会约束它的活动范围哦~ 父节点会约束它的活动范围哦~ 父节点会约束它的活动范围哦~ 源码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;/// <summary> /…...

面试总结——react生命周期

react生命周期总结 生命周期主要分为以下几个阶段&#xff1a; Mounting:创建虚拟DOM&#xff0c;渲染UI(初始化)Updating&#xff1a;更新虚拟DOM&#xff0c;重新渲染UI&#xff1b;(更新)UnMounting&#xff1a;删除虚拟DOM&#xff0c;移除UI&#xff1b;(销毁) 生命周期…...

初探推荐系统-01

文章目录一、什么是推荐系统是什么为什么长尾理论怎么做二、相似度算法杰卡德相似系数余弦相似度三、基于内容的推荐算法如何获取到用户喜欢的物品如何确定物品的特征四、推荐算法实验方法评测指标推荐效果实验方法1、离线实验2、用户调查3、在线实验评测指标1、预测准确度评分…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...