node.js对数据库的操作 之 query(查询)与pool(连接池)

一、Query(查询)

(1)意义

query是指向数据库发送的一个命令或请求,以检索、更新、插入或删除数据。它是一个具体的SQL语句或NoSQL命令,用于从数据库中获取或修改数据。

(2)用途

通过查询,你可以从数据库中检索信息,例如获取用户列表、查找特定记录等。你也可以使用查询来更新或删除数据库中的数据。

(3)代码示例:(以查询为例)

先在mysql里面建立一个users表,如下:

 vscode连接数据库进行query操作来查询 如下:
//1.安装mysql 
// 在控制台 npm install mysql -save
// 2.导入mysql模块
const mysql=require('mysql');
// 3.建立链接
// (3-1)创建链接对象
const conn=mysql.createConnection({host:'localhost', //mysql服务器地址port:3306, //mysql默认端口3306user:'root', //mysql登录用户名password:'root', //mysql登录密码database:'musicdb', //访问的数据库名称multipleStatements:true, //设置一次请求允许多条sql语句同时执行。默认false
});
// (3-2)链接数据库
conn.connect((err)=>{if(err){console.log('链接数据库失败');}else{console.log('链接数据库成功');}
});
// 4.执行sql语句,对数据库进行操作
// (4-1)准备sql语句
let sql2="select * from users"; //通过*把users表中所有数据查询出来// (4-2)执行sql
conn.query(sql2,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])if(err){console.log(err);}else{ console.log(results); //RowDataPacket对象数组// (4-3)关闭数据库conn.end()}
}); 
控制台输出:

 

二、Pool(连接池): 

(1)意义

连接池是一个存储数据库连接的对象池。当应用程序需要与数据库交互时,它可以从池中获取一个连接,使用完毕后将其返回给池,而不是每次都创建新的连接。

(2)用途

连接池主要用于提高性能和效率。创建和关闭数据库连接是一个昂贵的操作,特别是在高并发的环境中。使用连接池可以避免频繁地创建和关闭连接,从而提高应用程序的响应速度和吞吐量。

 (3)代码示例:(以查询为例)

先在mysql里面建立一个users表,如下:

 vscode连接数据库进行pool连接池操作来查询 如下:
// pool.js  连接池管理连接对象
// 1.导入mysql模块
const mysql=require('mysql');
// 2.创建连接池对象(创建连接对象,且自动的去管理连接对象的状态)
const pool=mysql.createPool({host:'localhost',port:3306,user:'root',password:'root',database:'musicdb',multipleStatements:true
});
// 3.从连接池中获取连接对象
pool.getConnection((err,conn)=>{ //err错误对象 conn连接对象if(err){console.log(err);} else{// 4.利用连接对象操作数据库let sql='select * from users;';conn.query(sql,[],(err1,results,fields)=>{//执行数据库操作if(err1){console.log(err1);}else{console.log(results);}// 5.释放连接对象conn.release();})}});
控制台输出:

 

三、query与pool的异同

(1)相同点: 

query查询和pool连接池都是数据库操作

(2)不同点: 

使用pool连接池时,你的应用程序会在启动时创建一个连接池,并在需要时从池中获取连接。当连接不再需要时,它会被返回到池中,而不是被关闭。这样,你的应用程序可以重复使用已经存在的连接,而不是每次都创建新的连接。使用pool连接池大大提高了性能,特别是在处理大量并发请求时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发实战:构建商品购买与订单管理系统【代码示例】

微信小程序开发实战:构建商品购买与订单管理系统【代码示例】 基础概念商品展示购物车订单管理 技术栈实战步骤1. 商品展示WXML模板JS逻辑 2. 购物车功能3. 订单生成4. 订单管理页面 安全性与性能优化结语与讨论 在电商领域,流畅的商品购买流程和高效的订…

4个可将 iPhone iPad iPod 修复至正常状态的 iOS 系统恢复软件

许多iOS用户对操作系统问题感到恐慌,例如iPhone卡在恢复模式、白屏死机、黑屏死机、iOS系统损坏、iTunes连接屏幕、iPhone数据丢失等。这些状态通常很无聊,因为您无法使用 iPhone 执行任何操作。 4个可将 iPhone iPad iPod 修复至正常状态的 iOS 系统恢复…

探索网络接口层:局域网技术和 PPP 协议

目录 前言 1.局域网协议标准 介质访问控制方法 以太网 2.MAC 寻址 3.以太网帧分析 以太网帧格式 4.局域网技术 5.PPP 协议 背景 PPP的基本组成 PPP帧格式 PPP的工作流程 PPP的特点 总结 前言 在 TCP/IP 协议栈中,网络接口层(或数据链路层&…

一键自动化博客发布工具,用过的人都说好(segmentfault篇)

segmentfault是我在这些平台中看过界面最为简洁的博客平台了。 今天就以segmentfault为例,讲讲在blog-auto-publishing-tools中的实现原理。 前提条件 前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下:https://github…

win中python中OpenCV使用cv2.imshow()报错的解决办法

1. 问题 cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu o…

leetcode45.跳跃游戏||

问题描述&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返…

KNOWLEDGE DISTILLATION BASED ON TRANSFORMED TEACHER MATCHING

摘要 温度标度作为logit匹配和概率分布匹配的bridge技术&#xff0c;在知识蒸馏&#xff08;KD&#xff09;中起着至关重要的作用。传统上&#xff0c;在蒸馏中&#xff0c;温度标度适用于教师的logits和学生的logits。在本文中&#xff0c;受到最近一些研究成果的启发&#x…

阿里云详细介绍AWS和GCP比较

阿里云与AWS&#xff08;亚马逊网络服务&#xff09;和GCP&#xff08;谷歌云平台&#xff09;相比&#xff0c;三者都是全球领先的云计算服务提供商&#xff0c;各自有着不同的特点和优势。以下是详细的比较分析&#xff1a; 1. **服务种类和生态系统**&#xff1a;AWS是云计算…

解锁程序员高效编程之谜:软件工具、编辑器与插件的秘密武器大公开!

程序员如何提高编程效率&#xff1f; 程序员提高编程效率是一个多方面的过程&#xff0c;涉及技能提升、工具使用、时间管理以及工作习惯等多个方面。以下是一些建议&#xff0c;帮助程序员提高编程效率&#xff1a; 1. 选择适合的工具 使用高效的代码编辑器或集成开发环境&…

高防护皮带机巡检机器人:适应恶劣环境的智能助手

在众多工业领域中&#xff0c;皮带机作为一种重要的物料输送设备&#xff0c;广泛应用于发电厂、煤栈等场所。然而&#xff0c;长期以来&#xff0c;皮带机的巡检工作一直依赖人工&#xff0c;存在着劳动强度大、检测效率低、安全性差等问题。为了解决这些痛点&#xff0c;皮带…

Redis 渐进式遍历 -- scan

前言 keys 可以一次性把 Redis 中的所有 key 都获取到&#xff0c;但这个操作比较危险&#xff0c;一次性获取所有的key 很容易会导致 Redis 阻塞。 而通过渐进式遍历&#xff08;不是一个命令就将所有的 key 值拿到&#xff0c;而是每执行一次命令只获取其中的一小部分&#x…

OWASP十大开源软件风险总结

01已知漏洞 已知漏洞通常是由软件开发人员和维护人员在无意中引入的&#xff0c;然后再由社区中的安全研究人员公开披露。组织可以采取行动来降低“具有已知漏洞的OSS组件”的风险&#xff0c;例如扫描他们所有OSS组件中的漏洞&#xff0c;根据已知利用率、利用概率、可达性分…

我独自升级崛起在哪下载 我独自升级电脑PC端下载教程分享

将于5月8日在全球舞台闪亮登场的动作角色扮演游戏《我独自升级崛起》&#xff0c;灵感源自同名热门动画与网络漫画&#xff0c;承诺为充满激情的游戏玩家群体带来一场集深度探索与广阔体验于一身的奇幻旅程。该游戏以独特的网络武侠世界观为基底&#xff0c;展现了一位普通人踏…

CPU炼丹——YOLOv5s

1.Anaconda安装与配置 1.1安装与配置 Anaconda3的安装看下面的教程&#xff1a; 最新Anaconda3的安装配置及使用教程&#xff08;详细过程&#xff09;http://t.csdnimg.cn/yygXD&#xff0c;接上面文章下载后&#xff0c;配置环境变量的时候记得在原来你装的Python更下面添…

【项目】高并发内存池实现(化简版tcmalloc)

前言 因为偶然的机会&#xff0c;我通过同学那里知道这个google有一个开源项目tcmalloc&#xff0c;他讲的头头是道&#xff0c;而我也对其非常感兴趣。 这个tcmalloc呢&#xff0c;全称Thread-Caching Malloc&#xff0c;通过名字就能看出跟线程相关&#xff0c;也确实如此&am…

Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 前言 通过前三篇Sprin…

[SaaS]建筑领域的sd应用

AirchiDesignhttp://www.aiarchi.art/#/建筑学长——千万建筑师的资源库和AI绘图创作平台建筑学长官网,为青年设计师建立的线上资源共享及AI绘图创作渲染平台,免费提供海量设计案例、CAD图纸、SU模型、PS素材、软件插件下载,提供丰富的设计软件教学与灵感参考素材图库。https:/…

扩展学习|一文读懂知识图谱

一、知识图谱的技术实现流程及相关应用 文献来源&#xff1a;曹倩,赵一鸣.知识图谱的技术实现流程及相关应用[J].情报理论与实践,2015, 38(12):127-132. &#xff08;一&#xff09;知识图谱的特征及功能 知识图谱是为了适应新的网络信息环境而产生的一种语义知识组织和服务的方…

fastdfs-client获取最新版FastDFS的storage节点时port为0

报错&#xff1a; com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源&#xff1a;cant create connection to/192.168.152.128:0 很明显&#xff0c;他认为我storage的port是0&#xff0c;应该是23000才对。打断点&#xff0c;发现是 com.…

C语言知识点补充——输入输出

1、如何输入转义字符&#xff08;"\n"、"\t"&#xff09;文本 可以使用双反斜杠来取消转移字符的特殊含义。 代码如下&#xff1a; #include <stdio.h> int main() {printf("\\n");printf("\\t");return 0; } 运行结果&…