MySQL数据库 – node使用

news2024/11/29 7:40:53

1 MySQL查询对象

2 MySQL查询数组

3 mysql2库介绍使用

4 mysql2预处理语句

5 mysql2连接池使用

6 mysql2的Promi

这里仅说明如何使用服务器连接数据库并进行操作。

预处理语句就是可以输入变量的语句(表现形式是有符号:?)。需要使用.execute来执行;

 

需要运行普通的语句(不添加变量的语句)。就使用query。

预处理语句有很多好处,比如性能好、安全性(sql注入)。

 如果连接的用户很多,每次都创建数据库的连接和销毁连接会有影响,所以创建数据库连接的时候我们可以使用连接池来做优化

没使用连接池的连接方法:

 使用了连接池的方法:

 

 

需要下载相应的第三方库才能让node驱动数据库:

npm install mysql2

准备数据-将json文件的数据插入到数据库中

从phpne.json文件里面获取json格式的数据并写到数据库里面。

const mysql = require('mysql2');
 
const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  user: 'root',
  password: 'Coderwhy123.',
  database: 'music_db'
});

const statement = `INSERT INTO products SET ?;`
const phoneJson = require('./phone.json');

for (let phone of phoneJson) {
  connection.query(statement, phone);
}

phone.jsond的内容:

[
  {
    "brand": "华为",
    "title": "华为nova 3(全网通) ",
    "price": 2699,
    "score": 6.7,
    "voteCnt": 65,
    "url": "http://detail.zol.com.cn/cell_phone/index1185512.shtml",
    "pid": "1185512"
  },
  {
    "brand": "华为",
    "title": "华为P20 Pro(6GB RAM/全网通) ",
    "price": 4488,
    "score": 8.3,
    "voteCnt": 103,
    "url": "http://detail.zol.com.cn/cell_phone/index1207038.shtml",
    "pid": "1207038"
  },
  {
    "brand": "华为",
    "title": "华为P20(全网通) ",
    "price": 3388,
    "score": 8.4,
    "voteCnt": 127,
    "url": "http://detail.zol.com.cn/cell_phone/index1175779.shtml",
    "pid": "1175779"
  },
  {
    "brand": "华为",
    "title": "华为nova 3i(4GB RAM/全网通) ",
    "price": 1999,
    "score": 7,
    "voteCnt": 9,
    "url": "http://detail.zol.com.cn/cell_phone/index1222100.shtml",
    "pid": "1222100"
  }
]

mysql2-基本使用

const mysql = require('mysql2')

// 1.创建一个连接(连接上数据库)
const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  database: 'music_db',
  user: 'root',
  password: 'Coderwhy123.'
})


// 2.执行操作语句, 操作数据库
const statement = 'SELECT * FROM `students`;'
// structure query language: DDL/DML/DQL/DCL
// query可以执行DDL/DML/DQL/DCL的语句的代码。返回的值在回调函数里面。
connection.query(statement, (err, values, fields) => {
  if (err) {
    console.log('查询失败:', err)
    return
  }

  // 查看结果
  console.log(values)
  // console.log(fields)
})

mysql2-预处理语句

const mysql = require('mysql2')

// 1.创建一个连接
const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  database: 'music_db',
  user: 'root',
  password: 'Coderwhy123.'
})

// 2.执行一个SQL语句: 预处理语句
const statement = 'SELECT * FROM `products` WHERE price > ? AND score > ?;'
connection.execute(statement, [1000, 8], (err, values) => {
  console.log(values)
})

// connection.destroy()

mysql2-连接池使用

const mysql = require('mysql2')

// 1.创建一个连接
const connectionPool = mysql.createPool({
  host: 'localhost',
  port: 3306,
  database: 'music_db',
  user: 'root',
  password: 'Coderwhy123.',
 // connectionLimit用来限制连接数量的
  connectionLimit: 5
})

// 2.执行一个SQL语句: 预处理语句
const statement = 'SELECT * FROM `products` WHERE price > ? AND score > ?;'
connectionPool.execute(statement, [1000, 8], (err, values) => {
  console.log(values)
})

mysql2-Promise写法

const mysql = require('mysql2')

// 1.创建一个连接
const connectionPool = mysql.createPool({
  host: 'localhost',
  port: 3306,
  database: 'music_db',
  user: 'root',
  password: 'Coderwhy123.',
  connectionLimit: 5
})

// 2.执行一个SQL语句: 预处理语句
const statement = 'SELECT * FROM `products` WHERE price > ? AND score > ?;'

connectionPool.promise().execute(statement, [1000, 9]).then((res) => {
  const [values, fields] = res
  console.log('-------------------values------------------')
  console.log(values)
  console.log('-------------------fields------------------')
  console.log(fields)
}).catch(err => {
  console.log(err)
})

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

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

相关文章

计算机网络管理-SNMP网络管理中遇到的问题及解决

启动网络发现的网络拓扑呈现错误 在实验中我发现,进入SNMPc 工具后,因为先前我是开启了网络发现的功能的,因此程序会自动生成拓补图,自动生成的网络规划是错误的,如下图所示: 我的设备:cdypc没…

手机号码在网时长 API 探索:精准营销与用户洞察

随着移动互联网的蓬勃发展,手机在网时长成为评估用户活跃度和风险控制的关键指标。手机号码在网时长 API 提供了查询手机号在网时长、判断活跃程度以及个性化推荐和优惠等功能,为企业实现精准营销、有效风险控制和深入用户洞察提供了有力支持。 本文将深…

pnpm v8.6 正式发布,软件包管理器

导读pnpm 是一个快速、节省磁盘空间的软件包管理器。它使用一个内容可寻址的文件系统来存储磁盘上所有模块目录的所有文件。当使用 npm 或 Yarn 时,如果你有 100 个使用 lodash 的项目,你将在磁盘上有 100 份 lodash 的拷贝,而使用 pnpm 时&a…

分类树,我从2s优化到0.1s

前言 分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中。 但就是这样一个简单的分类树查询功能,我们却优化了5次。 到底是怎么回事呢? 背景 我们的网站使用了SpringBoot推荐的模板引擎:Thymelea…

保经济、促创新,汽车行业综合采购(系统)数智化解决方案

汽车行业是中国国民经济的支柱产业,公安部数据显示,我国平均每百户家庭拥有汽车达到60辆。广阔的市场为行业带来大量需求,以及激烈的市场竞争;同时我国汽车产业正处在从传统工业时代向数字时代迈进的关键时期,急需创新…

【Rust日报】2023-06-07 使用 C++ 编写通用库并在 Rust 中使用它 (WASI)

使用 C 编写通用库并在 Rust 中使用它 (WASI) WebAssembly 简介 WebAssembly 是一种二进制指令格式,旨在成为一种低级虚拟机,可以在 Web 浏览器中以接近本机的速度运行代码。它不特定于网络,也可以在其他平台上运行。WebAssembly 代码可以从各…

【嵌入式环境下linux内核及驱动学习笔记-(15-1)例程】

目录 1、在APP直接调用标准文件IO操作I2C(针对学习笔记-15的15.3节)1.1 mail.c1.2 mpu6050.h1.3 mpu6050.c1.4 Makefile 2、以外称id的方式进行匹配的i2c驱动2.1 mpu6050.h2.2 mpu6050_i2c_client.c2.3 mpu6050_i2c_driver.c2.4 read_mpu.c 测试的应用层APP2.5 Makefile 3、以设…

Python3数据分析与挖掘建模(10)复合分析-交叉分析与实现示例

1. 复合分析 1.1 概述 复合分析(Factorial Analysis)是一种统计分析方法,用于研究多个因素对观测结果的影响,并探究各个因素之间的相互作用效应。 在复合分析中,研究者会选择多个因素(也称为处理变量或独…

武汉涉密系统集成资质保密制度涵盖哪些内容

涉密信息系统集成资质申请其中最核心的就是保密制度管理,这里面涉及到保密管理的方方面面,现场审查也是围绕保密制度建设内容来打分的。申报单位应当建立规范、操作性强的保密制度,并根据实际情况及时修订完善。保密制度的具体要求应当体现在…

highlight clock tree

当分析clock tree需要在图形界面highlight clock tree时,最朴实无华的方法就是贴报告,除此之外这里也分享一下用命令的方法。 1.Imported Path Pins 1)Highlight > Color By > Imported Path Pins 2)report_timing icc2…

智慧园区物业可视化大屏

随着万物互联、数字信息时代的到来,也给物业园区管理行业带来变革性影响。 园区作为城市的基本组成单元,是人口和产业的重要聚集区,现已逐渐成为中国经济转型升级和创新发展的主力。 智慧园区物业可视化整合园区现有信息系统的数据资源&#…

OpenStack部署(四)

OpenStack部署 8. Dashboard8.1 安装并配置8.2 重启web服务器以及会话存储服务8.3 浏览器访问配置 9. Designate9.1 创建Designate数据库并授权9.2 获得admin凭证9.3 创建designate用户并设置密码9.4 添加admin角色到designate用户9.5 创建designate服务实体9.6 创建designate服…

【计算机组成与体系结构Ⅰ】章节测试(1-3)

下列是计算机中几种常见的机器数编码: ①原码 ②反码 ③补码 零的表示唯一的是( ) A.仅③ B.② C.①、② D.①、③ 下列采用偶校验的8位奇偶校验编码中正确的是( )…

【Spring】——Spring简单 读和取

前言 ❤️❤️❤️Spring专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring_冷兮雪的博客-CSDN博客 上期我们讲解了Spring的创建与使用,发现 将Bean 注册到容器 这一步中,如果Bean对象…

Matter协议高速崛起,你真的了解它吗?

今天我们要聊的话题,和智能家居有关。 说到智能家居,大家应该都不会陌生。早在本世纪初,物联网概念刚刚诞生的时候,最主要的应用领域,就是智能家居。 这些年来,随着数字技术的不断发展,越来越多…

MINIX 已死,Linux 又将如何呢?

导读MINIX 操作系统大约的确已经死了。Minix 原来是荷兰阿姆斯特丹的 Vrije 大学计算机科学系的 Andrew S. Tanenbaum 教授所开发的一个类 Unix 操作系统,全部代码共约 12,000 行,起初是为给学生讲解操作系统的运作细节而开发。 Linus Torvalds 也曾表示…

报表生成器FastReport .Net用户指南:“Rich Text“对象

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…

1999-2020年31省省农村人口就业和文化程度相关数据

1999-2020年31省省农村人口就业和文化程度相关数据 1、时间: 2、范围:包括全国31省 3、来源:整理自各省NJ、统计NJ、农村NJ 4、指标包括: 乡村人口和乡村就业人员:乡村人口(万人)、乡村人口&…

opencv实践项目-停车位检测

目录 1. 步骤1.1 selector选择器1.2 detector探测器 2. 代码3. 效果图 1. 步骤 1.1 selector选择器 我们可以选择摄网络摄像头提供的第一帧,在该图像上选择停车位。为此,保存并使用该图像选择停车位。使用selectROIs函数标记停车位。ROI被定义为感兴趣…

分布式限流算法及实现介绍

分布式系统架构下面对突增的高并发访问请求,如何实现限流以保护系统的可用性是需要关注的一个问题。分布式限流实现机制上有很多中,包括基于网关实现、基于中间件如Redis实现等,本文简要介绍限流的常用算法以及实现方案。 1、分布式限流概述 …