Node的数据库编程(MySQL),增删改查

目录

在项目中操作MySQL数据库的步骤

执行数据库的操作

查询数据

插入数据

修改数据

删除数据 


在项目中操作MySQL数据库的步骤

1、安装操作MySQL数据库的第三方模块(mysql)   

mysql 模块是托管于 npm 上的第三方模块。它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。 想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包: npm install mysql 

2、通过mysql模块连接到MySQL数据库

配置mysql模块

//引入mysql2模块
const mysql = require('mysql2');
//2、创建数据库的连接
const connection = mysql.createConnection({
    host:'localhost',   //数据库服务器地址
    port:3306,    //mysql数据库的端口号
    user:'root',  //连接mysql的用户名
    password:'******',  //连接mysql的密码
    database:'dbms'   //要连接的数据库
})

3、通过mysql模块执行SQL语句

执行数据库的操作

在我的数据库dbms中存在一张student表为:

查询数据

A、普通查询:query(sql,回调函数)

B、条件查询:query(sqlString,values,回调函数),参数values对应的是sqlString中的占位符

示例:查询student表中cno为3的学生信息(?表示占位符)

//查询数据库中的表格的数据,回调函数中err参数存放的是查询错误的信息,若查询成功则result参数中放的是查询的结果集
//条件查询
connection.query({
    sql:'select * from student where cno = ?',
    values:['3']
},(err,result)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(result);
})

//普通查询
connection.query('select * from indent',(err,result)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(result);
})

 条件查询的结果为:

插入数据

Insert into 表名(列名…) values(值…)

示例:向表student中插入一行数据

var addsql = "insert into stu(sno,cno,sname,sgender,sage,saddress) values(?,?,?,?,?,?)";
var addsql_params = ['12','3','刘备','男','29','陕西'];
connection.query({
    sql:addsql,
    values:addsql_params
},(err,result)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log('插入结果为:'+result);
})

插入后的结果为:

修改数据

Update 表名 set 列名=值,… where 条件

注意:不加where条件就会把所有的数据都更新

示例:将刚才添加的数据中姓名修改为‘巴啦啦小魔仙’,年龄修改为27

var updatesql = "update student set sname=?,sage=? where sno=?";
var updatesql_params = ['巴啦啦小魔仙',27,'12'];
connection.query({
    sql:updatesql,
    values:updatesql_params
},(err,result)=>{
    console.log("受影响的行数:"+result.affectedRows);
    console.log("改变的行数:"+result.changedRows);
})

修改后的结果:

删除数据 

Delete from 表名 [where 条件]

示例:删除刚才添加的sno为12的学生信息

var delsql = "delete from student where sno=?";
connection.query(delsql,'12',(err,result)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("删除的行数:"+result.affectedRows);
})

删除后的结果:

 注意:防止sql的注入式攻击的方法:

注入式攻击:在进行语句的增删改查等操作时若有人拦截并添加一条永远满足的语句则会查询出所有的数据信息

select from stu where Sid=’S_1001’ (注入式攻击如在后面加or 1=1)

(1)使用占位符:?(提前预编译)

(2)使用connection.escape([参数字段])对值进行转义

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别Null.了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值