连接MySQL数据库

在学习Java的JDBC时, 需要导入一个第三方的驱动jar包 , 在Node.js中也差不多 , 需要导入mysql模块

为什么需要导入模块

首先你要知道市面上大大小小的数据库产品几十款 , 每一款的开发商都不一样 , 每一款数据库的底层实现也是不一样 .

假如让每一个程序员都根据每一款数据库产品写一套API , 肯定是不太现实的 .

所以Node.js官方给出API的设计规范 , 每一个厂商都根据设计规范自主开发一套API , 并封装成模块.

这样, 程序员连接你家的数据库产品时 , 只需要导入这些封装好的API即可.

在Node.js中操作数据库

导入模块

//安装模块
npm i mysql
//导入模块
const mysql = require('mysql');

获取链接

首先通过createConnection()方法注册链接 , 返回一个链接的对象

接着调用此对象的connect() 向数据库发起链接

//返回一个链接对象
var connection = mysql.createConnection({host: 'localhost',user: 'root',password: '123123',database: 'my_db'
})
connection.connect()

参数名

  • host 主机域名
  • user 用户名
  • password 数据库密码
  • database 指明我要连接哪一个库

在使用connection.connect()连接数据库时,可能连接不上 , 这是就会报错,可以使用回调函数来处理

connection.connect(function(err){if(err)return console.log('连接失败!'+err.message);console.log('连接成功')
})

操作数据库

通过connection.query()来执行sql语句

connection.query('select * from user',function(err,results){//查询失败if(err)return console.log(err.message)//查询成功console.log(results)
})

第一个参数是待执行的sql语句

第二个参数是回调函数,这个回调函数的两个参数

  1. 第一个参数err是一个错误对象, 当sql语句执行失败时, 会生成一个错误对象 , 传递给回调函数, 等待处理; 当sql执行成功时, err = null;
  2. 第二个参数是results , sql操作成功后会返回一个结果集 , 当sql语句执行失败时, results=null

若执行的是查询操作 , results为一个数组 , 一行为一个单位

其他的操作 , results则为一个包含执行后状态的对象

预编译语句

前面的sql语句是通过字符串直接写好的 , sql语句是写死的 , 不能再变了 ,如果向再次执行类似的语句还要重新写一遍

这时候可以使用预编译的语句

var sqlStr = 'insert into users values(?,?,?)'

像这样, 在参数的位置使用问号?充当一个占位符 , 后期使用时只需要替换问号?的地方即可

在调用connection.query()方法时 , 需要传入预编译的sql语句 ,

如果只有一个?占位符, 那么第二个参数可以是数值型, 字符串 , 对象等

var sqlStr = 'select * from users where id = ?'
connection.query(sqlStr,2,function(){if(err)return console.log('操作失败')console.log(results)
})

如果有多个?占位符, 可以传入一个数组, 数组内的元素与占位符一一对应

var sqlStr = 'insert into users values(?,?,?)'
connection.query(sqlStr,[5,'小王','10086'],function(err,result){if(err)return console.log('操作失败')if(err.affectedRows==1)console.log('插入数据成功')
})

插入数据的快捷方式

如果数据对象的每个属性和表中的字段一一对应 , 那么可以直接传入一个对象

var sqlStr = 'insert into users set ?';
var u{id: 10,uname:'小李',ph_num: '10000'
}
connection.query(sqlStr,u,(err,results)=>{if(err)return console.log('操作失败')console.log(results);
}
)

关闭链接

当数据库操作完成之后, 要及时关闭链接 , 防止连接占用大量的资源

调用connection.end()方法来关闭连接

Node.js连接数据库相关推荐

  1. Node.js连接数据库 实现注册、登录、判断注册

    Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册. 准备工作 创建文件夹 此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可. 使用npm进行mysql插件的安 ...

  2. 如何使用Node.js连接数据库

    创建数据库 在前面的文章中我们有手把手使用docker创建数据库,这里就直接沿用之前创建的数据库 首先启动docker,把之前的mysql容器运行起来 然后登入mysql客户端查看一下现有的数据库,以 ...

  3. node.js学习day03 通过node.js连接数据库实现增删改查

    通过node.js连接mysql数据库实现增删改查 1. npm i mysql 导入mysql模块 2.熟悉数据库增删改查 3.建立连接 通过mysql.createPool 4.案例 const ...

  4. Node.js 连接数据库

    操作数据库基本步骤 导入数据库文件 CREATE DATABASE `students` ;USE `students`;DROP TABLE IF EXISTS `stu`;CREATE TABLE ...

  5. 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)

    唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...

  6. Node.js MySQL连接数据库 Error: Cannot enqueue Handshake after invoking quit.

    Node.js使用MySQL开发登录功能时,第一次登录有效,但第二次登录报错: Error: Cannot enqueue Handshake after already enqueuing a Ha ...

  7. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  8. 58 Node.js中操作mongoDB数据库

    技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...

  9. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  10. Node.js实现简易爬虫

    为什么选择利用node来写爬虫呢?就是因为cheerio这个库,全兼容jQuery语法,熟悉的话用起来真真是爽 依赖选择 cheerio: Node.js 版的jQuery http:封装了一个HTP ...

最新文章

  1. ThreadLocal的使用及原理分析
  2. Win7命令行局域网发消息图解
  3. Linux配置最基础的命令
  4. css —— 图片环绕+首行缩进
  5. python开两个守护线程_python 守护线程
  6. 从富文本中截取图片_JS 获取富文本中的第一张图片 (正则表达式)
  7. c语言z基本数据类型文档,C语言基本数据类型
  8. 聚类法 人脸识别 matlab,声纹识别 快速概览 + 详细了解N:N聚类算法是如何应用的...
  9. U-Net源码上实现自己数据集的分割任务
  10. 蒜头君的藏书(映射)
  11. 矩估计和最大似然估计关系
  12. 听我一句劝,单片机不要去学STM32真的
  13. PHP报错:Classes\\PHPExcel\\Cell.php Line(594) Invalid cell coordinate ESIGN1
  14. 机器视觉光源概述(选型参考)
  15. 读书笔记《游戏改变世界》
  16. Linux系统下定时关机命令shutdown
  17. 小数分频锁相环中的整数边界杂散IBS
  18. javascript使用插件
  19. 120.(leaflet篇)区域下钻,区域钻取
  20. 基于安卓AndroidStudio智慧医疗医院预约挂号app设计

热门文章

  1. javamail 超时_为什么JavaMail连接超时过长
  2. 如何在JMP中快速实现报表的个性化与可视化?
  3. 大华条码秤开发之-快捷键传输
  4. 艾滋病多学科协作诊治模式的实施与成效
  5. 截图工具-Excel加载宏(图片大小可调)
  6. 编程语言的执行方式、静态语言和脚本语言
  7. 通达OA2017 工作流设计中“退回”功能的升级测试(图文)
  8. 逆矩阵在密码学中的应用(希尔密码原理)
  9. 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)感觉特别有用 转过来收藏...
  10. linux imx6 sdio wifi,关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试