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

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;
var router = function(app){
  var fs =require('fs');
  var http=require('https');
  var mysql=require('mysql');//调用mysql模块
  var request = require('request');
  var url = require('url');
  var querystring = require('querystring');
  var bodyParser     =         require("body-parser");
  var urlencodedParser = bodyParser.urlencoded({ extended: false })
  app.get('/get',function (req, res) {
  // console.log(req.query);//{ name: 'lambo' }
  //   console.log(req.query.name);//lambo
  // console.log(req.url);///one?name=lambo
  // console.log(url.parse(req.url).pathname);//  /one
  //   console.log(url.parse(req.url).query);//  name=lambo
// app.post('/one',urlencodedParser,function (req, res) {

    //text/html,application/json", @"text/json", @"text/javascript",@"text/html",
    //@"text/xml", @"text/plain; charset=utf-8",image/png
// res.writeHeader(200, {'Content-Type':'image/png;charset=UTF-8'});
res.writeHeader(200, {'Content-Type':'text/html;charset=UTF-8'});
// res.writeHeader(200, {'Content-Type':'application/json;charset=UTF-8'});

// 输出 JSON 格式
var json = JSON.stringify({
     "msg":"成功",
     result:[{
              "name":"新闻",
               "site":"http:www.baidu.com"
             },{
               "name":"新手教程",
               "site":"csdnnnn"
             }],
     "status":"1"
   }
);
console.log(json);
res.write(json);
res.end(json);


    //***使用连接池操作数据库
    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一样
//       //插入,query加占位
//       var userAddSql='insert into people (name,age,birthday) values(?,?,?)';
//       var params=['bbb',11,new Date()];
//       connection.query(userAddSql,params,function(err,rs){
//         if(err){
//           console.log(err.message);
//           return;
//         }else{
//           console.log('insert success');
//
//
//           var json = JSON.stringify({
//             "msg":"成功",
//             result:[{
//                      "name":"新闻",
//                       "site":"http:www.baidu.com"
//                     },{
//                       "name":"新手教程",
//                       "site":"csdnnnn"
//                     }],
//             "status":"1"
//           }
//  );
//
// res.write(json);
// res.end();
//         }
//     });//****************




// //******插入,query不加占位,直接写参数
// var nam="lamb10";
// var ag=30;
// var userAddSql='insert into people (name,age,birthday) values("nam",21,now())';
// 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=269;
// 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='lambo2';
// 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是查询的结果集,是一个二维数组,第一维是一条记录,第二维是一条记录中的各字段值
//       }
//     }
// });//**********************
//
//
// ///查询----不带占位************************************************
// var userinsertSql='SELECT *from people where name="bbb"';
// 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是查询的结果集,是一个二维数组,第一维是一条记录,第二维是一条记录中的各字段值
//       }
//     }
// });//***************************
//

// //更新---带占位**********************************************
// var userupdatetSql='update  people set age=? where name=? and id=?';
// var upparams=[23,"lambo2",3];
// connection.query(userupdatetSql,upparams,function(err,rs,fields){
//   if(err){
//     console.log(err);
//     return ;
//   }else{
//     console.log("更新成功");
//
//     }
// });//*******************
//

// //更新---不带占位***************************************************
// var userupdatetSql='update  people set age=24 where name="lambo2" and id=11';
// 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("关闭连接");
//   }
// });


    connection.release();//放回连接池
  });//poolconnect

    });//get请求
};
exports.router = router;


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值