位置: 编程技术 - 正文

Node.js数据库操作之连接MySQL数据库(一)(nodejs数据库数据渲染)

编辑:rootadmin

推荐整理分享Node.js数据库操作之连接MySQL数据库(一)(nodejs数据库数据渲染),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs json数据库,node操作mysql数据库,nodejs数据库连接,node 数据库操作,nodejs json数据库,nodejs数据库连接,nodejs数据库操作,nodejs数据库操作,内容如对您有帮助,希望把文章链接给更多的朋友!

介绍

首先说来介绍一下MySQL(非广告)。MySQL是由瑞典的MySQL AB公司开发,后来被甲骨文公司收购。和Oracle一样,MySQL是一个典型的关系型数据库,在百度百科中,把MySQL称为是最好的关系数据库管理系统的之一。

什么是关系型数据库和非关系型数据库

说到关系型数据库,大家肯定就会想到另一个词与之对应,非关系型数据库,那么这两者有什么样的区别呢?

关系型数据库是指采用了关系模型(指的是二维表格模型)来组织数据的数据库,有稳定的表结构;而非关系型数据库中的数据没有关系模型,以对象的形式存放到数据库中,对象之间的关系是通过每个对象的属性来决定的,有点类似于一长串json对象。典型的非关系型数据库有MongoDB和Redis。

MySQL的优缺点

我在项目中使用MySQL作为数据库主要是因为它体积小,速度快,安装完才几百兆,相比于Oracle好几个G它确实“轻”了不少。而且核心程序采用多线程编程,线程也是轻量级的进程,不会占用太多的系统资源,因此一般的中小型网站都选择MySQL数据库,而且最重要的是MySQL几乎是免费的。

但是也正是由于它的轻量级,因此它也“砍掉”了一些功能,比如存储过程等。

使用

这边不再赘述MySQL的安装过程,有需要的读者可以自行百度安装教程。在我们的项目中通过npm install mysql --save来安装依赖。

一个简单的Demo

首先,通过一个小的Demo来测试我们的环境是否已经搭建完毕了:

运行程序,如果显示“The solution is: 2”,那么整个连接查询是成功的;如果不成功,读者可以根据打印的错误信息提示来修改。

在查询完数据库后,需要通过end()函数将连接关闭。如果连接一直打开,首先会浪费不必要的系统资源;其次,数据库的连接数量有限制,如果达到上限时,会出现后续连接不上报错的情况。

建立数据库连接

要想查询数据库,首先就要跟数据库建立连接,上面的Demo给出了一种建立连接的方式。官方文档还给出了另外两种建立连接的方式。

隐式建立连接

我们并没有像Demo中一样使用connect()函数建立连接,而且直接进行了查询,这时候建立连接将会被隐式地调用。

连接回调查询

上面两种连接方式并没有对连接出错的情况进行处理,一旦连接出现错误将带来连锁的多米诺骨牌效应,查询也将会失败,整个程序也会崩溃,为了避免出现这样的情况,我们将查询和关闭连接放到回调函数中。

Node.js数据库操作之连接MySQL数据库(一)(nodejs数据库数据渲染)

注:上面的三种建立连接的方式都是可以的,取决于笔者怎么处理连接错误。

关闭连接

打开了数据库的连接我们也需要关闭连接,有两种关闭连接的方式,一种就是我们上面用的end()方法来关闭连接,它可以接收一个回调函数。

通过end()函数关闭连接不会影响队列中的查询。还有一种方式是调用destroy()函数。

destroy()函数确保了没有更多的时间和回调会触发连接。同时destroy()函数也没有回调函数。

使用数据库连接池

数据库连接是一种关键的、有限的、昂贵的资源。 —百度百科

通过上面的数据库连接方式我们会发现直接创建一个数据库连接比较“危险”,因为有很多种可能性导致连接的失败。而且如果我们的程序中随意都可以和数据库建立连接的话,我们的程序就比较得混乱,不能很有效的管理数据库连接。mysql库提供了另一种数据库连接方式给我们。

什么是数据库连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。这项技术能明显提高对数据库操作的性能。

用一个很生动的例子来形容数据库连接池的工作:以前我们存取钱都需要去银行的柜台交易,银行的柜台数量是有限的,人多的时候还需要排队;现在我们把钱都存在了支付宝上,每次需要用钱的时候都直接跟支付宝“要”,不需要再跑到银行去了,所有和银行“打交道”的业务都交给了支付宝帮我们来管理。

数据库连接池在初始化的时候将一定数量(数量受最小连接数制约)的数据库连接存放到数据库连接池中,不管这些数据库连接是否被使用,连接池一直要存放这么多的连接数量。连接池的最大数据库连接数量限制了连接池最多能同时拥有的连接数,如果超过最大连接数时,请求将会被添加到等待队列中去。

创建连接池

下面就开始创建一个数据库连接池。

首先我们通过createPool()方法创建了一个数据库连接池,它的配置参数和上面的配置基本差不多,只是多了一个最大连接数。每次我们需要和数据库建立连接的时候不再是直接建立连接,而是去连接池中通过pool.getConnection()方法“捞取”已有的连接。这个方法有一个回调,数据库连接作为回调参数返回给我们使用。

每次查询完数据库是都要使用release()方法释放数据库连接,这样数据库连接又回到了连接池中。释放后如果再使用connection将会报错。

关闭连接池

一般数据库连接池不需要关闭,但是如果使用完连接池需要将所有的连接关闭,我们可以使用pool.end()方法将其关闭。

end()方法提供一个回调方法,以便在所有连接关闭时进行一些操作。关闭连接池前所有队列中的查询任然会执行完成,所以每次关闭的时间都不一样。一旦end()方法被调用了,getConnection和其他一些获取连接池中连接的方法不会再被执行。

总结

本篇文章主要学习了nodejs连接mysql数据库的一些两种连接方式,直接连接和通过数据库连接池的方式进行连接。直接创建连接的方式比较“危险”,推荐使用连接池,把所有的连接集中管理,既方便又安全。

Node.js数据库操作之查询MySQL数据库(二) 前言我们在上一篇文章《Node.js数据库操作之连接MySQL数据库(一)》中已经学习了Nodejs连接MySQL数据库的几种方法,数据库连接上了之后就需要对数据库

详解nodeJS中读写文件方法的区别 导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read,createReadSt

Node.js使用NodeMailer发送邮件实例代码 0.目标这一节,我将实现一个简单的发送邮件功能。1.部署1.1部署Express如果不知道如何部署,可参照:部署Express1.2准备一个邮箱并开始SMTP服务为了实现

标签: nodejs数据库数据渲染

本文链接地址:https://www.jiuchutong.com/biancheng/376401.html 转载请保留说明!

上一篇:async/await与promise(nodejs中的异步操作问题)

下一篇:Node.js数据库操作之查询MySQL数据库(二)(nodejs json数据库)

  • 销售使用过的固定资产放弃减税
  • 小规模纳税人技术维护费可以抵扣吗
  • 减值准备为什么影响利润总额
  • 国际机票可以抵扣进项税吗
  • 长期投资算资产负债表吗
  • 高新技术企业账务处理注意事项
  • 股权投资需要准备哪些材料
  • 五险一金可以在手机上交吗
  • 国库集中支付行政运行
  • 建筑业如何开票
  • 何为提租补贴
  • 收到运输发票需要开票吗
  • 金蝶标准版结转损益发生错误
  • 单位向个人购买材料没有发票
  • 收到借款是承兑付款吗
  • 广告业增值税税率6%是多少
  • 转口贸易是否缴增值税
  • 土地增值税的纳税人是在我国境内
  • 固定资产合并抵扣增值税
  • 赊购商品一批
  • 企业交纳房产税,土地使用税、车船使用税应借记( )账户
  • 公司缴纳递延所得税吗
  • 税务咨询费用
  • 费用转入本年利润的哪一方
  • Win10系统cpu性能如何调高 Win10把cpu性能调到极佳的方法
  • windows11关机在哪
  • 讲述人功能怎么关闭
  • Mac SIP系统完整性保护开启及关闭的方法介绍
  • 公司不运营了需要注销吗
  • PHP:session_start()的用法_Session函数
  • 房产置换是什么
  • php调用图片
  • 从上布法罗荒野地区的惠特克顶小道向东看,阿肯色州奥沙克国家森林 (© Jens Lambert Photography/Getty Images Plus)
  • 递归 php
  • 期间费用转入本年利润
  • vue框架基础知识
  • 加工费计入什么成本类别
  • 网络命令traceroute
  • 会计审核费用报销单的职责
  • 高新企业研发项目是否需要立项审批?
  • 纳税申报的流程如何?面试怎么说
  • 当月收入可以下月开票吗
  • 个人社保信息变更流程
  • 车保险名称
  • 小规模未达起征点申报表怎么填
  • 固定资产低于净值出售会计处理
  • 单位出租不动产,按照5%的征收率计算应纳税额
  • 增值税专用发票怎么开
  • 收到预收款开具发票如何入账
  • 另一种收到企业信息英文
  • 计提折旧是哪个月的
  • 电子银行承兑到期没有兑现怎么办
  • 年末资产减值损失可以税前扣除吗
  • 单独运费怎么做账
  • 应记入营业外支出的科目核算是
  • 其他应付款二级科目有哪些
  • 天然气管道安装费多少钱一米
  • 同一个法人的两家企业可以进行互相开票吗
  • 增值税专用发票开了有什么用
  • 新开办企业如何建账
  • mysql 5.7.33安装
  • linux系统vim编辑readonly option
  • docker 自启动
  • 如何更改桌面文件存放位置
  • win8自带的视频播放器打不开
  • win10无法安装telnet
  • windowsxp怎么打开设置
  • win7系统桌面不能新建文件夹
  • 安卓游戏用什么软件开发
  • python实现人脸识别代码
  • android应用开发基础
  • 深入浅出jquery
  • fiori开发
  • Unity3D游戏开发标准教程
  • jquery字符转数字
  • 买药开税票多少税率
  • 安徽省定额发票真伪查询
  • 税务相关文件
  • 税务登记证的电子版在哪
  • 贵州企业申报系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设