脚本宝典收集整理的这篇文章主要介绍了Node.js---在项目中操作 MySQL,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
(1)安装操作 MySQL 数据库的第三方模块(mysql) (2)通过 mysql 模块连接到 MySQL 数据库 (3)通过 mysql 模块执行 SQL 语句
Mysql 模块是托管于 npm
上的第三方模块。它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。 想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包:
npm install mysql
如下:
如下图,我的MySQL 数据库中有如下数据:
在使用 mysql 模块操作 MySQL 数据库之前,必须先对 mysql 模块进行必要的配置,主要的配置步骤如下:
//导入模块
const mysql = require('mysql')
//建立与mysql数据库的联系
const db = mysql.createPool({
host:'127.0.0.1', //数据库的IP地址
user:'root', //登录数据库的账号
password:'******',//登录数据库的密码
database:'bear2' //指定要操作哪个数据库
})
调用 db.query()
函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
//测试mysql能否正常工作
db.query('SELECT 1',(err,results)=>{
if(err) return console.log(err.message)
//能够成功的执行SQL语句
console.log(results)
})
测试结果为:
查询 student
表中所有的数据:
db.query('SELECT * FROM STUDENT',(err,results)=>{
//查询失败
if(err) return console.log(err.message)
//查询成功
console.log(results)
})
结果为:
查询成功,且得到的结果是一个数组。 向 student
表中新增数据, 其中 cname
为 '小延'
,age
为 16
。示例代码如下:
//要插入到student表中的数据对象
const student = {cname:'小延',age:16}
//待执行的SQL语句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student(cname,age)VALUES(?,?)'
//使用数组的形式,依次为占位符指定具体的值
db.query(sqlStr,[student.cname,student.age],(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1){
console.log('插入成功') //成功
}
})
结果为:
打开数据库,查看数据,即:
数据插入成功。向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:
//要插入到student表中的数据对象
const student = {cid:9,cname:'小杨',age:18,class_id:1002}
//待执行的SQL语句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student SET ?'
//直接将数据对象当做占位符的值
db.query(sqlStr,student,(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1) console.log('插入数据成功!')
})
结果为:
打开数据库,查看数据,即:
数据插入成功。可以通过如下方式,更新表中的数据:
//要更新的数据对象
const student = {cid: 8, cname: '小欣', age: 18, class_id: 1002}
//要执行的SQL语句
const sqlStr = 'UPDATE student SET cname=?,age=?,class_id=? WHERE cid=?'
//调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr,[student.cname,student.age,student.class_id],(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1) {
console.log('更新数据成功!')
}
})
结果为:
打开数据库,查看数据,即:
数据更新成功。更新表数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速更新表数据:
const student = {cid:1,cname:'小钰',age:17,class_id:1003}
//要执行的SQL语句
const sqlStr = 'UPDATE student SET ? WHERE cid=?'
调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr,[student,student.cid],(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1){
console.log('数据更新成功!') //成功
}
})
结果为:
打开数据库,查看数据,即: 数据更新成功。 在删除数据时,最好根据 cid
这样的唯一标识,来删除对应的数据。示例如下:
//要执行的SQL语句
const sqlStr = 'DELETE FROM student WHERE cid=?'
//调用db.query()执行sql语句的同时,为占位符指定确定的值
db.query(sqlStr,3,(err,results)=>{
if(err) return console.log(err.message)
if(results.affectedRows === 1){ // 失败
console.log('删除数据成功!') //成功
}
})
结果为:
打开数据库,查看数据,即: 删除数据成功。 需要注意的是:如果SQL语句有多个占位符,则必须为每个占位符指定具体的值,如果SQL语句只有一个占位符,则可以省略数组。 使用 DELETE
语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。 所谓的标记删除,就是在表中设置类似于 class_id
这样的状态字段,来标记当前这条数据是否被删除。 当用户执行了删除的动作时,我们并没有执行 DELETE
语句把数据删除掉,而是执行了 UPDATE
语句,将这条数据对应的class_id
字段标记为删除即可。
//标记删除:使用UPDATE语句代替DELETE语句;只更新数据的状态,并没有真正删除。
db.query('UPDATE student SET class_id=? WHERE cid=?',[1000,6],(err,results)=>{
if(err) return console.log(err.message)
if(results.affectedRows === 1){ // 失败
console.log('标记删除成功!') //成功
}
})
结果为:
打开数据库,查看数据,即: 标记删除成功。以上是脚本宝典为你收集整理的Node.js---在项目中操作 MySQL全部内容,希望文章能够帮你解决Node.js---在项目中操作 MySQL所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。