js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池
var vue = require('vue');
引入vue的意思,commonjs的写法。node都是用require来载入模块的,可以看看webpack+vue。
require()可以调用模块。
这不是就把vue模块命了个名吗?
nodejs的写法,引入vue模块并命名为vue的意思。前端的东西,大多都是跑在nodejs上的,所以引用模块方式就必须按照nodejs标准
===================================================================
链接:https://blog.csdn.net/u011146511/article/details/78992040
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;
js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池的更多相关文章
- SQLCMD的用法,使用CMD 执行sql语句
SQLCMD的用法,使用CMD 执行sql语句 SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本. 语法如下: sqlcmd [ { { -U <login id> ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句
BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- JQuery之append和appendTo的区别,还有js中的appendChild用法
JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的 ...
- JS中event.keyCode用法及keyCode对…
js中event.keyCode用法及keyCode对照表 标签: javascriptJavaScriptJavascriptjavaScript 2012-12-11 15:11 HTML Jav ...
- 浅谈JS中 reduce() 的用法
过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...
- JS中 reduce() 的用法
过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...
- (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...
随机推荐
- HDU 1003 解题报告
问题描述:求最大连续字串 分析:一道简单的DP,状态转移方程是d[i] = ( d[i-1]+a[i] > a[i] ) ? d[i-1]+a[i] : a[i] d[i]表示以第i个数字结尾的 ...
- P1970花匠
传送 首先,这道题据说是一个dp 其次,贪心就能做 我们先来看好想好写的贪心 按照题目来,所有偶数点要么都是凸的,要么都是凹的,不能有凸有凹.我们把每株花的高度都在平面直角坐标系中点出来,再连线.这样 ...
- 20150803--JS学习笔记(1)
JS中对象的 prototype 的含义: javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. A.pro ...
- Vagrant 手册之同步目录 - 基本用法
原文地址 - 概述 原文地址 - 基本用法 同步目录 Synced folder 支持在宿主机和客户机之间共享目录,从而允许你在宿主机的项目文件上工作,但是可以在客户机上编译并运行. 默认情况下,Va ...
- 前后端分离 token和cookie对比
HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证 1.cookie 用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用 ...
- 开发中遇到的相关linux问题
一:java.sql.SQLException: Access denied for user 'root'@'10.150.152.200' (using password: YES) 1:用户名后 ...
- Java程序流程控制
程序流程控制有 选择,循环,以及跳转结构 选择结构中无非就是 If 和 switch语句我两种都做了一些小案例 1. 利用Scanner库来获得控制台用户输入的数字与代码中定义的变量比较 packag ...
- Spring cloud 注册服务小结
服务注册中心:Eureka.Zookeeper.Cousul.Nacos 使用RestTemplate.openFeign做服务调用,底层使用的是Ribbon. Ribbon做了负载均衡,也可以做一个 ...
- Libre OJ 2255 (线段树优化建图+Tarjan缩点+DP)
题面 传送门 分析 主体思路:若x能引爆y,从x向y连一条有向边,最后的答案就是从x出发能够到达的点的个数 首先我们发现一个炸弹可以波及到的范围一定是坐标轴上的一段连续区间 我们可以用二分查找求出炸弹 ...
- 记一次sql索引颠覆认知
首先先建立数据库和插入数据 我们要查询的命令如下,前提是以mysql数据库为准 , 结果和我想的不太一样,先准备好环境和所需的数据库和表 准备阶段 CREATE TABLE `test` ( `id` ...