1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)

一、mysql2 概述

  1. mysql2 是一个用于 Node.js 的 MySQL 客户端库

  2. mysql2 是 mysql 库的一个改进版本,提供了更好的性能和更多的功能

  3. 使用 mysql2 之前,需要先安装它 npm install mysql2


二、mysql2 初识案例

1、数据库准备
  1. 创建数据库 testdb
CREATE DATABASE testdb;
  1. 创建数据表 employees
CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,firstName VARCHAR(50) NOT NULL,lastName VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,phone VARCHAR(20),hireDate DATE,jobTitle VARCHAR(50)
);
  1. 添加一些测试数据
INSERT INTO employees (firstName, lastName, email, phone, hireDate, jobTitle) VALUES
('John', 'Doe', 'john.doe@example.com', '123-456-7890', '2023-01-15', 'Software Engineer'),
('Jane', 'Smith', 'jane.smith@example.com', '098-765-4321', '2022-07-22', 'Product Manager'),
('Alice', 'Johnson', 'alice.johnson@example.com', '555-123-4567', '2021-11-30', 'Designer'),
('Bob', 'Brown', 'bob.brown@example.com', '555-987-6543', '2020-03-15', 'Data Analyst');
2、测试
const mysql = require("mysql2/promise");const pool = mysql.createPool({host: "localhost",database: "testdb",user: "root",password: "1234",waitForConnections: true,connectionLimit: 10,queueLimit: 0,
});const queryAllTest = async () => {const connection = await pool.getConnection();const result = await connection.execute("SELECT * FROM employees");connection.release();console.log(result.rows);
};queryAllTest();
  • 输出结果
[{id: 1,firstName: 'John',lastName: 'Doe',email: 'john.doe@example.com',     phone: '123-456-7890',hireDate: 2023-01-14T16:00:00.000Z,jobTitle: 'Software Engineer'},{id: 2,firstName: 'Jane',lastName: 'Smith',email: 'jane.smith@example.com',phone: '098-765-4321',hireDate: 2022-07-21T16:00:00.000Z,jobTitle: 'Product Manager'},{id: 3,firstName: 'Alice',lastName: 'Johnson',email: 'alice.johnson@example.com',phone: '555-123-4567',hireDate: 2021-11-29T16:00:00.000Z,jobTitle: 'Designer'},{id: 4,firstName: 'Bob',lastName: 'Brown',email: 'bob.brown@example.com',phone: '555-987-6543',hireDate: 2020-03-14T16:00:00.000Z,jobTitle: 'Data Analyst'}
]

三、初识案例挖掘

1、案例解析
  1. 引入 mysql2
const mysql = require("mysql2/promise");
  1. 创建数据库连接池
const pool = mysql.createPool({host: "localhost",database: "testdb",user: "root",password: "1234",waitForConnections: true,connectionLimit: 10,queueLimit: 0,
});
参数类型说明
hoststring数据库服务器的地址
databasestring要连接的数据库名称
userstring数据库用户名
passwordstring数据库密码
waitForConnectionsboolean当没有可用连接时,是否等待连接释放(默认为 true)
connectionLimitnumber连接池中允许的最大连接数
queueLimitnumber当连接池中没有可用连接且达到最大等待队列长度时,新请求的行为(0 表示无限制)
  1. 从连接池中获取一个连接
const connection = await pool.getConnection();
  1. 执行一条 SQL 语句并获取结果
const result = await connection.execute("SELECT * FROM employees");
  1. 释放一个连接
connection.release();
2、要点复习
  1. 复习一下数组的解构赋值
const nums = [1,2,3,4,5];
const [num1, num2] = nums;
console.log(num1, num2);
  • 输出结果
1 2
  1. 对 execute 方法返回的数组的解构赋值,就是获取该数组的第一个元素,完整的数组是这样的
const queryAllResultTest = async () => {const connection = await pool.getConnection();const result = await connection.execute("SELECT * FROM employees");connection.release();console.log(result);
};queryAllResultTest();
  • 输出结果
[[{id: 1,firstName: 'John',lastName: 'Doe',email: 'john.doe@example.com',phone: '123-456-7890',hireDate: 2023-01-14T16:00:00.000Z,jobTitle: 'Software Engineer'},{id: 2,firstName: 'Jane',lastName: 'Smith',email: 'jane.smith@example.com',phone: '098-765-4321',hireDate: 2022-07-21T16:00:00.000Z,jobTitle: 'Product Manager'},{id: 3,firstName: 'Alice',lastName: 'Johnson',email: 'alice.johnson@example.com',phone: '555-123-4567',hireDate: 2021-11-29T16:00:00.000Z,jobTitle: 'Designer'},{id: 4,firstName: 'Bob',lastName: 'Brown',email: 'bob.brown@example.com',phone: '555-987-6543',hireDate: 2020-03-14T16:00:00.000Z,jobTitle: 'Data Analyst'}],[`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,`firstName` VARCHAR(50) NOT NULL,`lastName` VARCHAR(50) NOT NULL,`email` VARCHAR(100) NOT NULL UNIQUE_KEY,`phone` VARCHAR(20),`hireDate` DATE(10),`jobTitle` VARCHAR(50)]
]
3、案例优化
  • 添加 try catch finally 能保证在 execute 方法执行 SQL 语句发送异常时连接也能释放
const queryAllErrorTest = async () => {const connection = await pool.getConnection();try {const [rows] = await connection.execute("SELECT * FROM error_employees");console.log(rows);} catch (error) {console.error(error);} finally {connection.release();}
};queryAllErrorTest();
  • 输出结果
Error: Table 'testdb.error_employees' doesn't exist

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

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

相关文章

[HDCTF 2023]LoginMaster

[HDCTF 2023]LoginMaster 知识点 quine注入 解题 用户名要为admin 查看robots.txt&#xff0c;查看源码 password是注入点 function checkSql($s) {if(preg_match("/regexp|between|in|flag||>|<|and|\||right|left|reverse|update|extractvalue|floor|subs…

springboot398研究生调研管理系统(论文+源码)_kaic

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#…

OSCP - Proving Grounds - Zino

主要知识点 SMB知识python脚本提权 具体步骤 执行nmap Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-10 01:24 UTC Nmap scan report for 192.168.52.64 Host is up (0.00077s latency). Not shown: 65529 filtered tcp ports (no-response) PORT STATE SER…

JDK8新特性之Stream流03

收集Stream流中的结果 IntStream intStream = Stream.of(1, 2, 3, 4, 5).mapToInt(Integer::intValue); intStream.filter(n -> n > 3).forEach(System.out::println); intStream.filter(n -> n > 3).count; intStream.filter(n -> n > 3).reduce(0, Integer…

自制shell命令行解释器,深入理解Linux系统命令行实现原理

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;Linux学习、游戏、数据结构、c语言基础、c学习、算法 目录 ​编辑 1.打印命令提示符 ​编辑 2.获取用户输入指令 3.重定向分析 4.命令行参数表与环境变量表 5.命令解析 6.命令执行 6.1.创建子进程 6.2.文件…

ADB常用各模块操作命令

目录 1. 基本设备信息获取 2. 设备连接与管理 3. 文件管理 4. 进程与应用管理 5. 日志与调试 6. 调试和性能 7. 设备操作 8.adb命令的应用场景 1. 基本设备信息获取 获取设备的系统版本&#xff0c;获取设备安卓版本号&#xff1a; adb shell getprop ro.build.version.…

Mac M1 安装数据库

1. Docker下载 由于Sqlserver和达梦等数据库&#xff0c;不支持M系列的芯片&#xff0c;所以我们通过docker安装 下载并安装docker: https://www.docker.com/get-started/ 安装完成后&#xff0c;打开docker 2. SQL Server 安装 2.1 安装 打开终端&#xff0c;执行命令 doc…

渗透测试实验环境搭建

下载虚拟机镜像 5个虚拟机镜像&#xff0c;其中Linux攻击机我选择用最新的kali Linux镜像&#xff0c;其余的均使用本书配套的镜像。 网络环境配置 VMware虚拟网络编辑器配置&#xff1a; 将VMnet1和VMnet8分别设置IP为192.168.10.0/24和10.10.10.0/24。 虚拟机镜像配置 攻击机…

Linux shell脚本(一)

监控内存和磁盘容量&#xff0c;小于给定值时报警 [rootlinux-lyz test1]# ./monitor.sh & [1] 23110 # 提取根分区剩余空间 disk_size$(df / | awk /\//{print $4})# 提取内存剩余空间 mem_size$(free | awk /Mem/{print $4}) while : do # 注意内存和磁盘提取空间大小都…

C# 中 Interface(接口)和 virtual(虚方法)

文章目录 前言一、Interface&#xff08;接口&#xff09;1. 什么是接口2. 接口的定义3. 实现接口4. 接口的作用 二、virtual&#xff08;虚方法&#xff09;1. 什么是虚方法2. 虚方法的定义3. 重写虚方法4. 虚方法的作用 三、Interface 和 virtual 的结合使用1. 接口中的虚方法…

JWT 在 SaaS 系统中的作用与分布式 SaaS 系统设计的最佳实践

在现代 SaaS&#xff08;软件即服务&#xff09; 系统中&#xff0c;随着服务规模的扩大和用户需求的多样化&#xff0c;如何高效、安全地进行用户身份验证、权限控制以及租户隔离&#xff0c;成为了系统架构中的核心问题之一。**JWT&#xff08;JSON Web Token&#xff09;**作…

《智能体雏形开发(高阶实操)》二、智能体雏形开发

基于阿里云百炼平台开发智能体应用:生成日报与周报 在智能体开发中,生成结构化的日报与周报是一个典型的任务。本篇文章将基于阿里云百炼平台,结合 Python 开发环境,介绍如何开发一个从日志文件提取信息并生成摘要的智能体。我们将从需求分析、任务设计到核心功能实现逐步…

阿里云ECS服务器域名解析

阿里云ECS服务器域名解析&#xff0c;以前添加两条A记录类型&#xff0c;主机记录分别为www和&#xff0c;这2条记录都解析到服务器IP地址。 1.进入阿里云域名控制台&#xff0c;找到域名 ->“解析设置”->“添加记录” 2.添加一条记录类型为A,主机记录为www&#xff0c…

Scala的正则表达式(1)

package hfd //正则表达式的应用场景 //1.查找 findAllin //2.验证 matches //3.替换//验证用户名十分合法 //规则&#xff1a; //1.长度在6-12之间 //2.不能数字开头 //3.只能包含数字&#xff0c;大小写字母&#xff0c;下划线 object Test36 {def main(args: Array[String])…

网络知识:IP数据报知识详解

目录 一、IP数据报概念 二、IPV4数据报报头组成 三、IPV6数据报报头组成 今天给大家分享IP数据库相关的知识,希望对大家进一步了解IP协议提供一些帮助! 一、IP数据报概念 TCP/IP协议的网际层接收到传输层传递过来的数据单元,封装成向下(OSI模型的数据链路层、TCP/IP协…

Android 因为混淆文件配置,打release包提示running R8问题处理

一、报错信息 Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in E:\workplace\xxxxxx\app\build\outputs\mapping\release\missing_rules.txt. Missing class org.mediakit.R$layout (refer…

【中断】向量中断、中断服务程序、中断向量、中断向量表、中断向量地址,之间的关系

向量中断&#xff1a; 一种识别中断源的方式和技术。 中断服务程序&#xff1a; 不同的中断信号&#xff0c;需要用不同的 中断处理程序&#xff08;中断服务程序&#xff09; 来处理。中断服务程序一般是OS模块。 中断向量&#xff1a; 由向量地址形成部件&#xff0c;是…

蓝桥杯刷题日记02-小球反弹

问题描述 有一长方形&#xff0c;长为 343720343720 单位长度&#xff0c;宽为 233333233333 单位长度。在其内部左上角顶点有一小球 (无视其体积)&#xff0c;其初速度如图所示且保持运动速率不变&#xff0c;分解到长宽两个方向上的速率之比为 dx:dy15:17dx:dy15:17。小球碰…

SWIRL:有望成为2025年顶级AI搜索引擎

现在几乎每家公司都会有内部文档系统&#xff0c;如阿里的语雀、钉钉&#xff0c;字节的飞书&#xff0c;Confluence&#xff0c;印象笔记等等都可以提供给B端在局域网部署。因此&#xff0c;如果能把搜索功能做得高效&#xff0c;就能提高自家产品的竞争力。 想象一下&#xf…

【源码】Sharding-JDBC源码分析之SQL中读写分离动态策略、数据库发现规则及DatabaseDiscoverySQLRouter路由的原理

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…