nodejs之代码操作mysql(直连和连接池连接mysql)\mysql权限操作

时间:2022-09-19 23:18:30

mysql权限:http://blog.csdn.net/anzhen0429/article/details/78296814

npm的mysql地址:https://www.npmjs.com/package/mysql

====================直连mysql========================

var router = function(app){
  app.get('/one', function (req, res) {
res.writeHeader(200, {'Content-Type':'text/plain;charset=UTF-8'});
    // res.sendFile("/Users/wofu/Desktop/node/views/one.html");
    res.write("ddd");
    var mysql=require('mysql');//调用mysql模块
//创建一个connection数据库连接对象
var connection=mysql.createConnection({
  host:'localhost',//主机
  user:'root',//mysql认证的用户名
  password:'123456',//mysql用户密码
  database:'firstDB',//数据库名
  port:'3306'//端口号
});
//链接数据库
connection.connect(function(err){
  if(err){
    console.log(err);
    return;
  }else{
    res.write("数据库连接成功");
    res.end();
  }
});
//插入数据,,update和delete跟insert类似
var name="lamb9";
var ages=30;
var userAddSql='insert into people (name,ages) values(?,?)';
var params=[name,ages];
******加参数的方法,应用于sql语句中有?占位符的情况
connection.query(userAddSql,params,function(err,rs){
  if(err){
    console.log(err.message);
    return;
  }else {
    console.log("插入成功");
    console.log(rs);
  }
});


//*****query语句不加第二个参数************************************
var nam="lamb10";
var ag=30;
var userAddSql='insert into people (name,ages) values("lambo10",20)';
connection.query(userAddSql,function(err,rs){
  if(err){
    console.log(err.message);
    return;
  }else {
    console.log("插入成功");
    console.log(rs);
  }
});
//删除---query带参数**********************************************
var userdeletSql='delete from  people where id=?';
var upparams=6;
connection.query(userdeletSql,upparams,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("删除成功");


    }
});


//删除---query不带参数***************************************************
var userdeletSql='delete from  people where id=7';
connection.query(userdeletSql,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("删除成功");


    }
});
//查询-----query带参数************************************************
var userinsertSql='SELECT *from people where name=?';
var insertparams='lambo';
connection.query(userinsertSql,insertparams,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("查询成功");
  for(var i=0;i<rs.length;i++){
    console.log(rs);
  console.log(rs[0].name);//rs是查询的结果集,是一个二维数组,第一维是一条记录,第二维是一条记录中的各字段值
      }
    }
});


///qurey不带参数************************************************
var userinsertSql='SELECT *from people where name="lambo"';


connection.query(userinsertSql,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("查询成功");
  for(var i=0;i<rs.length;i++){
    console.log(rs);
  console.log(rs[0].name);//rs是查询的结果集,是一个二维数组,第一维是一条记录,第二维是一条记录中的各字段值
      }
    }
});
//更新---query带参数**********************************************
var userupdatetSql='update  people set ages=? where name=?';
var upparams=[23,"four"];
connection.query(userupdatetSql,upparams,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("更新成功");


    }
});


//更新---query不带参数***************************************************
var userupdatetSql='update  people set ages=24 where name="four"';
connection.query(userupdatetSql,function(err,rs,fields){
  if(err){
    console.log(err);
    return ;
  }else{
    console.log("更新成功");


    }
});
//关闭连接
connection.end(function(err){
  if(err){
    console.log(err.toString());
    return;
  }else{
    console.log("关闭连接");
  }
});
});
};


exports.router = router;

=======================连接池连接mysql=====================

连接池的原理:初始化的时候创建多个连接,放到数组中存起来;当有访问数据的时候,不用再创建连接,直接从连接池取出连接使用进行各种数据库操作,操作关闭后再放回连接池中;连接池会自动管理池中的连接(当访问量少的时候,会自动减少一些连接,当访问量大的时候会自动增加一些连接);

安装连接池 :1.需要安装mysql:npm install mysql -g   2.需要安装mysqlpool模块npm install -g node-mysql

*********************创建连接池

var router = function(app){
  var mysql=require('mysql');//调用mysql模块
  app.get('/one', function (req, res) {
    // res.sendFile("/Users/wofu/Desktop/node/views/one.html");
res.writeHeader(200, {'Content-Type':'text/plain;charset=UTF-8'});
    res.write("ddd");

    //***使用连接池操作数据库
    var Pool=mysql.createPool({
      host:'localhost',//主机
      user:'root',//mysql认证的用户名
      password:'123456',//mysql用户密码
      database:'firstDB',//数据库名
      port:'3306'//端口号
    });
//有连接时调用
Pool.on('connection', function (connection,err) {
if(err){ console.log(err); 
return;}else{res.write("数据库连接成功");
    res.end();
  }
});

//一个连接上的活动全部执行完时调用
Pool.on('acquire', function (connection) {
  console.log('Connection %d acquired', connection.threadId);
});
//等待一个有效队列
Pool.on('enqueue', function () {
  console.log('Waiting for available connection slot');
});
//一个连接释放了
Pool.on('release', function (connection) {
  console.log('Connection %d released', connection.threadId);
});

// //结束所有连接
// Pool.end(function (err) {
//   if (err){
//     console.log(err);
//   }else {
//     console.log("连接全部关闭");
//   }
// });

    //从链接池中获取一个连接
  Pool.getConnection(function(err,connection){
      // 执行数据库操作  增删改查和直接连接mysql一样
      var userAddSql='insert into people (name,ages) values(?,?)';
      var params=['bbb',11];
      connection.query(userAddSql,params,function(err,rs){
        if(err){
          console.log(err.message);
          return;
        }else{
          console.log('insert success');
          res.write("成功");
res.end();//这句话表示浏览器相应结束,如果在这句话后继续向浏览器写入会报错,res.write()是错误的;
        }

    connection.release();//放回连接池
    });
});
});
};
exports.router = router;