MYSQL模块
1、连接数据库:
mysql -h主机名称 -u用户名 -p密码
2、普通连接MySQL:
// 创建连接
var connection=mysql.createConnection({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'****',
database:'testNode'
});
// 执行连接
connection.connect();
// 执行sql语句,callback是回调函数用于获取sql语句执行结果
connection.query('select * from emp',(err,result)=>{
if err throw err;
console.log(result); // 返回的是一个数组,数组里边是多个对象
});
// sql执行完断开连接
connection.end();
例1:
// 引入mysql模块 const mysql=require('mysql'); // 普通链接 // 创建连接对象 var connection=mysql.createConnection({ host:'127.0.0.1', port:'3306', user:'root', password:'****', database:'testNode' }); // 执行连接 connection.connect(); // 执行sql语句 connection.query('select * from emp',(err,result)=>{ if err throw err; console.log(result); // 返回的是一个数组,数组里边一个员工是一个对象 }); // sql执行完断开连接 connection.end();
连接池---提前准备好连接
使用连接池连接
// 创建连接池对象
var pool=mysql.createPool({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'****',
database:'testNode',
connectionLimit:20 // 设置连接池的数量
});
// 执行sql语句
pool.query('select * from emp where id=1',callback)
例1:
// 引入mysql模块 const mysql=require('mysql'); // 创建连接池对象 var pool=mysql.createPool({ host:'127.0.0.1', port:'3306', user:'root', password:'****', database:'testNode', connectionLimit:20 // 设置连接池的数量 }); // 执行sql语句 // 取一个连接执行sql语句 pool.query('select * from emp where id=1',(err,result)=>{ if err throw err; console.log(result); });
练习:
/* 删除id为1的员工的信息,查看结果; 修改id为2的员工姓名为“王五”,查看结果 */ // 引入mysql模块 const mysql=require('mysql'); // 创建连接池对象 var pool=mysql.createPool({ host:'127.0.0.1', port:'3306', user:'root', password:'****', database:'testNode', connectionLimit:20 // 设置连接池的数量 }); // 执行sql语句 /* 返回的对象中的affectedRow属性表示是否成功删除,如果大于0有 数据删除,负责没有删除任何数据 */ // 使用占位符?,防止sql注入 pool.query('delete from emp where id=? and ename=?',[1,"张三"],(err,result)=>{ if err throw err; console.log(result); }); pool.query('updata emp set ename=? where ename=?',["王五","李四"],(err,result)=>{ if err throw err; console.log(result); }); pool.query('insert into emp values(?,?),[3,"小赵"]',(err,result)=>{ if err throw err; console.log(result); }); // 以对象的方式插入数据 var person={ eid:null, ename:'tom' }; pool.query('insert into emp set ?',[person],(err,result)=>{ if err throw err; console.log(result); });
[练习]
【.js文件】
/* 创建web服务器,托管静态资源到public中,该目录下创建login.html. 点击提交按钮,向服务器端发请求(/add,post) */ const express=require('express'); const bodyParser=require('body-parser'); const mysql=require('mysql'); const querystring=require('querystring'); var server=express(); server.listen(3000); server.use(express.static('public')); server.user(bodyParser.urlencoded({ extended:false })); server.post('/add',(req,res)=>{ var obj=req.body; // 获取数据对象,将数据插入到数据库中 var connection=mysql.createConnection({ host:'127.0.0.1', port:'3306', user:'root', password:'****', database:'testNode' }); connection.connect(); pool.query('insert into demp set ?',[obj],(err,result)=>{ if err throw err; // console.log(result); // 判断数据是否插入成功 if(result.affectedRow>0{ res.send({code:200,msg:'add success'}); }); });
【.html文件】
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <form action="/add" method="post"> 部门编号<input type="text" name="dempnum"><br> 部门名称<input type="text" name="dempname"><br> <input type="submit"> </form> </body> </html>