node.js(5)——mysql、连接池

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>
原文地址:https://www.cnblogs.com/hd-test/p/11873380.html