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;