web学习笔记14-node.js基础-MySQL模块

三、MySQL模块

是node.js下,专门用来操作MySQL数据库的模块

1,引入MySQL模块,连接数据库

// 引入MySQL模块
const mysql = require('mysql')

//创建连接
const connection = mysql.createConnection({
    host:'127.0.0.1',
    port:'3306',    //端口通常可以省略
    user:'root',
    password:'',    // 此处使用默认空密码
    database:'test'    //进入数据库test数据库
})

//执行连接
connection.connect()

2,对数据进行操作

query:执行SQL命令

connection.query(SQL语句,数组,回调函数)

SQL注入:在让用户可以输入值的地方,用户的非法输入可能会造成数据库的非授权操作

防止SQL注入:对用户提供的数据进行过滤

2.1 查询

//防止SQL注入
var str = 'king'
// ? 表示占位符
// query的第二个参数,是一个数组,数组中的值会被过滤,过滤后再去替换占位符
connection.query(`select * from emp where ename = ?`,[str],(err,r)=>{
    if(err){
        throw err
    }
    console.log(r)
})

2.2 插入

//数据对象
var userObj = {
    eid: null,
    ename: 'jack',
    sex: '1',
    birthday: '1999-09-08',
    salary: 3200,
    deptid: '20',
}
// 插入语句,过滤值,回调函数
connection.query('insert into emp values(?,?,?,?,?,?)', [userObj.eid, userObj.ename, userObj.sex, userObj.birthday,
    userObj.salary, userObj.deptid
], (err,r) => {
    if (err) {
        throw err
    }
    console.log(r)
    console.log('插入成功')
})

//一次过滤整个数组 将values 变换成 set 
connection.query('insert into emp set ?',[userObj],(err,r)=>{
    if(err){
        throw err
    }
    console.log('插入成功')
})

2.3 修改

// 修改数据
var userObj = {
	eid: 20,
	ename: 'marry',
	sex: '0',
	birthday: '2000-09-29',
	salary: 8000,
	deptid: '10',
}
connection.query('update emp set ? where eid = ?',[userObj,userObj.eid],(err,r)=>{
	if(err){
		throw err
	}
	if(r.changedRows != 0){
		console.log('修改成功')
	}else{
		console.log('修改失败')
})

2.4 删除

// 删除数据
var eid = 4
connection.query('delete from emp where eid=?',[eid],(err,r)=>{
	if(err){
		throw err
	}
	// console.log(r)
	if(r.affectedRows != 0){
		console.log('删除数据成功')
	}else{
		console.log('删除数据失败')
	}
})

2.5 如何执行多个SQL命令

// 在建立连接时开启执行多个SQL命令
const connection = mysql.createConnection({
    ···   //连接数据库
	multipleStatements:true  //开启一次执行多个SQL命令
})

//执行多个sql命令
connection.query('select * from dept;select count(*) from dept',(err,r)=>{
	if(err){
		throw err
	}
	console.log(r)
})

2.6 连接池

连接池包含一组连接

//引入MySQL
const mysql = require('mysql')

//创建连接池对象,包含一组连接
const pool = mysql.createPool({
	host: '127.0.0.1',
	port: '3306',
	user: 'root',
	password: '',
	database: 'tedu',
	// 设置连接池的数量,默认是15个
	connectionLimit: 15
})

//获取一个连接 异步方式 通过回调函数获取
pool.getConnection((err,connection)=>{
	//err 可能获取失败
	if(err){
		throw err
	}
	
	//connection 成功获取的连接
	// 执行SQL命令
	connection.query('select * from dept',(err,r)=>{
		if(err){
			throw err
		}
		console.log(r)
		// 释放连接,归还到连接池
		connection.release()
	})
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值